kopia lustrzana https://github.com/ryukoposting/Signal-Android
Hide bottom nav when viewing archived conversations.
rodzic
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()
|
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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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"
|
||||||
|
|
Ładowanie…
Reference in New Issue