Hide bottom nav when viewing archived conversations.

fork-5.53.8
Alex Hart 2022-04-13 13:57:15 -03:00 zatwierdzone przez Greyson Parrelli
rodzic 0a07800eba
commit 24f59b0a17
4 zmienionych plików z 12 dodań i 16 usunięć

Wyświetl plik

@ -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() val controller: NavController = requireView().findViewById<View>(R.id.fragment_container).findNavController()
when (controller.currentDestination?.id) { when (controller.currentDestination?.id) {
R.id.conversationListFragment -> goToStateFromConversationList(state, controller) R.id.conversationListFragment -> goToStateFromConversationList(state, controller)
R.id.conversationListArchiveFragment -> goToStateFromConversationArchiveList(state, controller) R.id.conversationListArchiveFragment -> Unit
R.id.storiesLandingFragment -> goToStateFromStories(state, controller) 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) { private fun goToStateFromConversationList(state: ConversationListTabsState, navController: NavController) {
if (state.tab == ConversationListTab.CHATS) { if (state.tab == ConversationListTab.CHATS) {
return return
@ -300,12 +292,15 @@ class MainActivityListHostFragment : Fragment(R.layout.main_activity_list_host_f
override fun onDestinationChanged(controller: NavController, destination: NavDestination, arguments: Bundle?) { override fun onDestinationChanged(controller: NavController, destination: NavDestination, arguments: Bundle?) {
when (destination.id) { when (destination.id) {
R.id.conversationListFragment -> { R.id.conversationListFragment -> {
conversationListTabsViewModel.isShowingArchived(false)
presentToolbarForConversationListFragment() presentToolbarForConversationListFragment()
} }
R.id.conversationListArchiveFragment -> { R.id.conversationListArchiveFragment -> {
conversationListTabsViewModel.isShowingArchived(true)
presentToolbarForConversationListArchiveFragment() presentToolbarForConversationListArchiveFragment()
} }
R.id.storiesLandingFragment -> { R.id.storiesLandingFragment -> {
conversationListTabsViewModel.isShowingArchived(false)
presentToolbarForStoriesLandingFragment() presentToolbarForStoriesLandingFragment()
} }
} }

Wyświetl plik

@ -8,10 +8,11 @@ data class ConversationListTabsState(
) { ) {
data class VisibilityState( data class VisibilityState(
val isSearchOpen: Boolean = false, val isSearchOpen: Boolean = false,
val isMultiSelectOpen: Boolean = false val isMultiSelectOpen: Boolean = false,
val isShowingArchived: Boolean = false
) { ) {
fun isVisible(): Boolean { fun isVisible(): Boolean {
return !isSearchOpen && !isMultiSelectOpen return !isSearchOpen && !isMultiSelectOpen && !isShowingArchived
} }
} }
} }

Wyświetl plik

@ -52,6 +52,10 @@ class ConversationListTabsViewModel(repository: ConversationListTabRepository) :
store.update { it.copy(visibilityState = it.visibilityState.copy(isMultiSelectOpen = false)) } 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 { class Factory(private val repository: ConversationListTabRepository) : ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T { override fun <T : ViewModel?> create(modelClass: Class<T>): T {
return modelClass.cast(ConversationListTabsViewModel(repository)) as T return modelClass.cast(ConversationListTabsViewModel(repository)) as T

Wyświetl plik

@ -19,11 +19,7 @@
<fragment <fragment
android:id="@+id/conversationListArchiveFragment" android:id="@+id/conversationListArchiveFragment"
android:name="org.thoughtcrime.securesms.conversationlist.ConversationListArchiveFragment" android:name="org.thoughtcrime.securesms.conversationlist.ConversationListArchiveFragment"
android:label="conversation_list_archive_fragment" > android:label="conversation_list_archive_fragment" />
<action
android:id="@+id/action_conversationListArchiveFragment_to_storiesLandingFragment"
app:destination="@id/storiesLandingFragment" />
</fragment>
<fragment <fragment
android:id="@+id/storiesLandingFragment" android:id="@+id/storiesLandingFragment"