From d6fa04f56d4e42718efc22b1ae9cd4b6d329cb47 Mon Sep 17 00:00:00 2001 From: Moez Bhatti Date: Wed, 6 Jun 2018 13:47:41 -0400 Subject: [PATCH] Show progress when conversation is loading Potentially related to #1079 --- .../java/common/util/extensions/ViewExtensions.kt | 1 + .../main/java/feature/compose/ComposeActivity.kt | 5 ++++- .../src/main/java/feature/compose/ComposeState.kt | 1 + .../main/java/feature/compose/ComposeViewModel.kt | 9 ++++++++- .../src/main/res/layout/compose_activity.xml | 13 +++++++++++++ 5 files changed, 27 insertions(+), 2 deletions(-) diff --git a/presentation/src/main/java/common/util/extensions/ViewExtensions.kt b/presentation/src/main/java/common/util/extensions/ViewExtensions.kt index d994a133..ed1b67e0 100644 --- a/presentation/src/main/java/common/util/extensions/ViewExtensions.kt +++ b/presentation/src/main/java/common/util/extensions/ViewExtensions.kt @@ -41,6 +41,7 @@ fun ImageView.setTint(color: Int) { } fun ProgressBar.setTint(color: Int) { + indeterminateTintList = ColorStateList.valueOf(color) progressTintList = ColorStateList.valueOf(color) } diff --git a/presentation/src/main/java/feature/compose/ComposeActivity.kt b/presentation/src/main/java/feature/compose/ComposeActivity.kt index 8a9771b4..bd637b0a 100644 --- a/presentation/src/main/java/feature/compose/ComposeActivity.kt +++ b/presentation/src/main/java/feature/compose/ComposeActivity.kt @@ -126,6 +126,7 @@ class ComposeActivity : QkThemedActivity(), ComposeView { message.supportsInputContent = true theme + .doOnNext { loading.setTint(it.theme) } .doOnNext { send.setBackgroundTint(it.theme) } .doOnNext { send.setTint(it.textPrimary) } .doOnNext { messageAdapter.theme = it } @@ -165,7 +166,7 @@ class ComposeActivity : QkThemedActivity(), ComposeView { toolbarTitle.setVisible(!state.editingMode) chips.setVisible(state.editingMode) contacts.setVisible(state.contactsVisible) - composeBar.setVisible(!state.contactsVisible) + composeBar.setVisible(!state.contactsVisible && !state.loading) // Don't set the adapters unless needed if (state.editingMode && chips.adapter == null) chips.adapter = chipsAdapter @@ -187,6 +188,8 @@ class ComposeActivity : QkThemedActivity(), ComposeView { chipsAdapter.data = state.selectedContacts contactsAdapter.data = state.contacts + loading.setVisible(state.loading) + sendAsGroup.setVisible(state.editingMode && state.selectedContacts.size >= 2) sendAsGroupSwitch.isChecked = state.sendAsGroup diff --git a/presentation/src/main/java/feature/compose/ComposeState.kt b/presentation/src/main/java/feature/compose/ComposeState.kt index ec101be7..e24c5589 100644 --- a/presentation/src/main/java/feature/compose/ComposeState.kt +++ b/presentation/src/main/java/feature/compose/ComposeState.kt @@ -34,6 +34,7 @@ data class ComposeState( val selectedContacts: List = ArrayList(), val sendAsGroup: Boolean = true, val conversationtitle: String = "", + val loading: Boolean = false, val query: String = "", val searchSelectionId: Long = -1, val searchSelectionPosition: Int = 0, diff --git a/presentation/src/main/java/feature/compose/ComposeViewModel.kt b/presentation/src/main/java/feature/compose/ComposeViewModel.kt index d453baa1..6e8cef1e 100644 --- a/presentation/src/main/java/feature/compose/ComposeViewModel.kt +++ b/presentation/src/main/java/feature/compose/ComposeViewModel.kt @@ -149,7 +149,14 @@ class ComposeViewModel @Inject constructor( .skipUntil(state.filter { state -> state.editingMode }) .takeUntil(state.filter { state -> !state.editingMode }) .map { contacts -> contacts.map { it.numbers.firstOrNull()?.address ?: "" } } - .mapNotNull { addresses -> messageRepo.getOrCreateConversation(addresses) } + .observeOn(Schedulers.computation()) + .doOnNext { newState { copy(loading = true) } } + .mapNotNull { addresses -> + val conversation = messageRepo.getOrCreateConversation(addresses) + newState { copy(loading = false) } + conversation + } + .observeOn(AndroidSchedulers.mainThread()) .mergeWith(initialConversation) .filter { conversation -> conversation.isLoaded } .doOnNext { conversation -> diff --git a/presentation/src/main/res/layout/compose_activity.xml b/presentation/src/main/res/layout/compose_activity.xml index 6c301993..4c7d1afc 100644 --- a/presentation/src/main/res/layout/compose_activity.xml +++ b/presentation/src/main/res/layout/compose_activity.xml @@ -54,6 +54,19 @@ app:textColor="tertiary" app:textSize="secondary" /> + +