mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-25 12:17:22 +00:00
Hide bottom nav when viewing archived conversations.
This commit is contained in:
committed by
Greyson Parrelli
parent
0a07800eba
commit
24f59b0a17
@@ -89,20 +89,12 @@ class MainActivityListHostFragment : Fragment(R.layout.main_activity_list_host_f
|
||||
val controller: NavController = requireView().findViewById<View>(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()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 <T : ViewModel?> create(modelClass: Class<T>): T {
|
||||
return modelClass.cast(ConversationListTabsViewModel(repository)) as T
|
||||
|
||||
Reference in New Issue
Block a user