diff --git a/app/src/main/java/org/thoughtcrime/securesms/main/MainActivityListHostFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/main/MainActivityListHostFragment.kt index 896c550af..214e2eddb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/main/MainActivityListHostFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/main/MainActivityListHostFragment.kt @@ -89,20 +89,12 @@ class MainActivityListHostFragment : Fragment(R.layout.main_activity_list_host_f val controller: NavController = requireView().findViewById(R.id.fragment_container).findNavController() when (controller.currentDestination?.id) { R.id.conversationListFragment -> goToStateFromConversationList(state, controller) - R.id.conversationListArchiveFragment -> goToStateFromConversationArchiveList(state, controller) + R.id.conversationListArchiveFragment -> Unit R.id.storiesLandingFragment -> goToStateFromStories(state, controller) } } } - private fun goToStateFromConversationArchiveList(state: ConversationListTabsState, navController: NavController) { - if (state.tab == ConversationListTab.CHATS) { - return - } else { - navController.navigate(R.id.action_conversationListArchiveFragment_to_storiesLandingFragment) - } - } - private fun goToStateFromConversationList(state: ConversationListTabsState, navController: NavController) { if (state.tab == ConversationListTab.CHATS) { return @@ -300,12 +292,15 @@ class MainActivityListHostFragment : Fragment(R.layout.main_activity_list_host_f override fun onDestinationChanged(controller: NavController, destination: NavDestination, arguments: Bundle?) { when (destination.id) { R.id.conversationListFragment -> { + conversationListTabsViewModel.isShowingArchived(false) presentToolbarForConversationListFragment() } R.id.conversationListArchiveFragment -> { + conversationListTabsViewModel.isShowingArchived(true) presentToolbarForConversationListArchiveFragment() } R.id.storiesLandingFragment -> { + conversationListTabsViewModel.isShowingArchived(false) presentToolbarForStoriesLandingFragment() } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabsState.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabsState.kt index bce02d567..1640fab6f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabsState.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabsState.kt @@ -8,10 +8,11 @@ data class ConversationListTabsState( ) { data class VisibilityState( val isSearchOpen: Boolean = false, - val isMultiSelectOpen: Boolean = false + val isMultiSelectOpen: Boolean = false, + val isShowingArchived: Boolean = false ) { fun isVisible(): Boolean { - return !isSearchOpen && !isMultiSelectOpen + return !isSearchOpen && !isMultiSelectOpen && !isShowingArchived } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabsViewModel.kt index 2109ce4b7..b6dbc05fc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabsViewModel.kt @@ -52,6 +52,10 @@ class ConversationListTabsViewModel(repository: ConversationListTabRepository) : store.update { it.copy(visibilityState = it.visibilityState.copy(isMultiSelectOpen = false)) } } + fun isShowingArchived(isShowingArchived: Boolean) { + store.update { it.copy(visibilityState = it.visibilityState.copy(isShowingArchived = isShowingArchived)) } + } + class Factory(private val repository: ConversationListTabRepository) : ViewModelProvider.Factory { override fun create(modelClass: Class): T { return modelClass.cast(ConversationListTabsViewModel(repository)) as T diff --git a/app/src/main/res/navigation/main_activity_list.xml b/app/src/main/res/navigation/main_activity_list.xml index 852b06460..4ea8ac005 100644 --- a/app/src/main/res/navigation/main_activity_list.xml +++ b/app/src/main/res/navigation/main_activity_list.xml @@ -19,11 +19,7 @@ - - + android:label="conversation_list_archive_fragment" />