From d27f0cf313fa7b0081c2f0ca319600f289853bf0 Mon Sep 17 00:00:00 2001 From: mcarare Date: Fri, 20 Mar 2020 17:41:34 +0200 Subject: [PATCH] [fenix] For https://github.com/mozilla-mobile/fenix/issues/9252: Update views visibility ony when list has finished loading --- .../fenix/settings/logins/SavedLoginsFragment.kt | 1 + .../fenix/settings/logins/SavedLoginsFragmentStore.kt | 10 ++++++++-- .../mozilla/fenix/settings/logins/SavedLoginsView.kt | 6 ++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/settings/logins/SavedLoginsFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/logins/SavedLoginsFragment.kt index 1629674e93..24a5d28342 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/logins/SavedLoginsFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/logins/SavedLoginsFragment.kt @@ -65,6 +65,7 @@ class SavedLoginsFragment : Fragment() { savedLoginsStore = StoreProvider.get(this) { SavedLoginsFragmentStore( SavedLoginsFragmentState( + isLoading = true, items = listOf(), filteredItems = listOf() ) diff --git a/app/src/main/java/org/mozilla/fenix/settings/logins/SavedLoginsFragmentStore.kt b/app/src/main/java/org/mozilla/fenix/settings/logins/SavedLoginsFragmentStore.kt index 86f9842bb1..68898bf39b 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/logins/SavedLoginsFragmentStore.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/logins/SavedLoginsFragmentStore.kt @@ -48,6 +48,7 @@ sealed class SavedLoginsFragmentAction : Action { * @property items Filtered (or not) list of logins to display */ data class SavedLoginsFragmentState( + val isLoading: Boolean = false, val items: List, val filteredItems: List ) : State @@ -61,14 +62,19 @@ private fun savedLoginsStateReducer( ): SavedLoginsFragmentState { return when (action) { is SavedLoginsFragmentAction.UpdateLogins -> state.copy( + isLoading = false, items = action.list, filteredItems = action.list ) is SavedLoginsFragmentAction.FilterLogins -> { if (action.newText.isNullOrBlank()) { - state.copy(filteredItems = state.items) + state.copy( + isLoading = false, + filteredItems = state.items) } else { - state.copy(filteredItems = state.items.filter { it.url.contains(action.newText) }) + state.copy( + isLoading = false, + filteredItems = state.items.filter { it.url.contains(action.newText) }) } } } diff --git a/app/src/main/java/org/mozilla/fenix/settings/logins/SavedLoginsView.kt b/app/src/main/java/org/mozilla/fenix/settings/logins/SavedLoginsView.kt index 293ea31a0e..d4d9120715 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/logins/SavedLoginsView.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/logins/SavedLoginsView.kt @@ -69,8 +69,10 @@ class SavedLoginsView( } fun update(state: SavedLoginsFragmentState) { - view.saved_logins_list.isVisible = state.items.isNotEmpty() - view.saved_passwords_empty_view.isVisible = state.items.isEmpty() + if (!state.isLoading) { + view.saved_logins_list.isVisible = state.items.isNotEmpty() + view.saved_passwords_empty_view.isVisible = state.items.isEmpty() + } loginsAdapter.submitList(state.filteredItems) } }