From f3bbcc4e17bead9cc800ed310d35ca4cdd53bf86 Mon Sep 17 00:00:00 2001 From: mcarare Date: Fri, 20 Mar 2020 17:41:34 +0200 Subject: [PATCH] For #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 1629674e9..24a5d2834 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 86f9842bb..68898bf39 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 293ea31a0..d4d912071 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) } }