Commit 08f0588f authored by Filipe de Lima Brito's avatar Filipe de Lima Brito

Adds scrolling to the server view.

parent 7465f525
...@@ -73,6 +73,8 @@ class OnBoardingPresenter @Inject constructor( ...@@ -73,6 +73,8 @@ class OnBoardingPresenter @Inject constructor(
view.showLoading() view.showLoading()
try { try {
withContext(DefaultDispatcher) { withContext(DefaultDispatcher) {
refreshSettingsInteractor.refresh(serverUrl)
setupConnectionInfo(serverUrl) setupConnectionInfo(serverUrl)
// preparing next fragment before showing it // preparing next fragment before showing it
...@@ -80,7 +82,6 @@ class OnBoardingPresenter @Inject constructor( ...@@ -80,7 +82,6 @@ class OnBoardingPresenter @Inject constructor(
checkIfLoginFormIsEnabled() checkIfLoginFormIsEnabled()
checkIfCreateNewAccountIsEnabled() checkIfCreateNewAccountIsEnabled()
refreshSettingsInteractor.refresh(serverUrl)
serverInteractor.save(serverUrl) serverInteractor.save(serverUrl)
block() block()
......
...@@ -12,6 +12,8 @@ import chat.rocket.android.server.infraestructure.RocketChatClientFactory ...@@ -12,6 +12,8 @@ import chat.rocket.android.server.infraestructure.RocketChatClientFactory
import chat.rocket.android.server.presentation.CheckServerPresenter import chat.rocket.android.server.presentation.CheckServerPresenter
import chat.rocket.android.util.extension.launchUI import chat.rocket.android.util.extension.launchUI
import chat.rocket.android.util.extensions.isValidUrl import chat.rocket.android.util.extensions.isValidUrl
import kotlinx.coroutines.experimental.DefaultDispatcher
import kotlinx.coroutines.experimental.withContext
import javax.inject.Inject import javax.inject.Inject
class ServerPresenter @Inject constructor( class ServerPresenter @Inject constructor(
...@@ -74,30 +76,33 @@ class ServerPresenter @Inject constructor( ...@@ -74,30 +76,33 @@ class ServerPresenter @Inject constructor(
} }
} }
private fun connectToServer(server: String, block: () -> Unit) { private fun connectToServer(serverUrl: String, block: () -> Unit) {
if (!server.isValidUrl()) { if (!serverUrl.isValidUrl()) {
view.showInvalidServerUrlMessage() view.showInvalidServerUrlMessage()
} else { } else {
launchUI(strategy) { launchUI(strategy) {
// Check if we already have an account for this server... // Check if we already have an account for this server...
val account = getAccountsInteractor.get().firstOrNull { it.serverUrl == server } val account = getAccountsInteractor.get().firstOrNull { it.serverUrl == serverUrl }
if (account != null) { if (account != null) {
navigator.toChatList(server) navigator.toChatList(serverUrl)
return@launchUI return@launchUI
} }
view.showLoading() view.showLoading()
try { try {
refreshSettingsInteractor.refresh(server) withContext(DefaultDispatcher) {
serverInteractor.save(server) refreshSettingsInteractor.refresh(serverUrl)
setupConnectionInfo(server) setupConnectionInfo(serverUrl)
// preparing next fragment before showing it // preparing next fragment before showing it
checkEnabledAccounts(server) checkEnabledAccounts(serverUrl)
checkIfLoginFormIsEnabled() checkIfLoginFormIsEnabled()
checkIfCreateNewAccountIsEnabled() checkIfCreateNewAccountIsEnabled()
serverInteractor.save(serverUrl)
block() block()
}
} catch (ex: Exception) { } catch (ex: Exception) {
view.showMessage(ex) view.showMessage(ex)
} finally { } finally {
......
...@@ -55,7 +55,7 @@ class ServerFragment : Fragment(), ServerView { ...@@ -55,7 +55,7 @@ class ServerFragment : Fragment(), ServerView {
private lateinit var serverUrlDisposable: Disposable private lateinit var serverUrlDisposable: Disposable
private val layoutListener = ViewTreeObserver.OnGlobalLayoutListener { private val layoutListener = ViewTreeObserver.OnGlobalLayoutListener {
text_server_url.isCursorVisible = text_server_url.isCursorVisible =
KeyboardHelper.isSoftKeyboardShown(constraint_layout.rootView) KeyboardHelper.isSoftKeyboardShown(scroll_view.rootView)
} }
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
...@@ -72,7 +72,7 @@ class ServerFragment : Fragment(), ServerView { ...@@ -72,7 +72,7 @@ class ServerFragment : Fragment(), ServerView {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
constraint_layout.viewTreeObserver.addOnGlobalLayoutListener(layoutListener) scroll_view.viewTreeObserver.addOnGlobalLayoutListener(layoutListener)
setupToolbar() setupToolbar()
setupSpinner() setupSpinner()
setupOnClickListener() setupOnClickListener()
...@@ -88,7 +88,7 @@ class ServerFragment : Fragment(), ServerView { ...@@ -88,7 +88,7 @@ class ServerFragment : Fragment(), ServerView {
override fun onDestroyView() { override fun onDestroyView() {
super.onDestroyView() super.onDestroyView()
constraint_layout.viewTreeObserver.removeOnGlobalLayoutListener(layoutListener) scroll_view.viewTreeObserver.removeOnGlobalLayoutListener(layoutListener)
// Reset deep link info, so user can come back and log to another server... // Reset deep link info, so user can come back and log to another server...
deepLinkInfo = null deepLinkInfo = null
unsubscribeEditText() unsubscribeEditText()
......
<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/constraint_layout" android:id="@+id/scroll_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/colorWhite" android:background="@color/colorWhite"
android:focusableInTouchMode="true"
android:padding="@dimen/screen_edge_left_and_right_margins" android:padding="@dimen/screen_edge_left_and_right_margins"
tools:context=".authentication.server.ui.ServerFragment"> tools:context=".authentication.server.ui.ServerFragment">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView <ImageView
android:id="@+id/image_server" android:id="@+id/image_server"
android:layout_width="wrap_content" android:layout_width="wrap_content"
...@@ -80,4 +82,5 @@ ...@@ -80,4 +82,5 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment