From 681d38611d80d96d5ba687932560be19df126a97 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Tue, 1 Apr 2025 12:10:09 -0300 Subject: [PATCH] Hide stories if feature is disabled. --- .../securesms/main/MainNavigation.kt | 21 +++++++++++++++++-- .../tabs/ConversationListTabsFragment.kt | 3 ++- .../stories/tabs/ConversationListTabsState.kt | 4 +++- .../tabs/ConversationListTabsViewModel.kt | 2 +- 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/main/MainNavigation.kt b/app/src/main/java/org/thoughtcrime/securesms/main/MainNavigation.kt index 9b3fe20115..793bb50ab4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/main/MainNavigation.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/main/MainNavigation.kt @@ -87,6 +87,7 @@ data class MainNavigationState( val callsCount: Int = 0, val storiesCount: Int = 0, val storyFailure: Boolean = false, + val isStoriesFeatureEnabled: Boolean = true, val selectedDestination: MainNavigationDestination = MainNavigationDestination.CHATS, val compact: Boolean = false ) @@ -104,7 +105,15 @@ fun MainNavigationBar( contentColor = MaterialTheme.colorScheme.onSurface, modifier = Modifier.height(if (state.compact) 48.dp else 80.dp) ) { - MainNavigationDestination.entries.forEach { destination -> + val entries = remember(state.isStoriesFeatureEnabled) { + if (state.isStoriesFeatureEnabled) { + MainNavigationDestination.entries + } else { + MainNavigationDestination.entries.filterNot { it == MainNavigationDestination.STORIES } + } + } + + entries.forEach { destination -> val badgeCount = when (destination) { MainNavigationDestination.CHATS -> state.chatsCount @@ -241,7 +250,15 @@ fun MainNavigationRail( } } ) { - MainNavigationDestination.entries.forEachIndexed { idx, destination -> + val entries = remember(state.isStoriesFeatureEnabled) { + if (state.isStoriesFeatureEnabled) { + MainNavigationDestination.entries + } else { + MainNavigationDestination.entries.filterNot { it == MainNavigationDestination.STORIES } + } + } + + entries.forEachIndexed { idx, destination -> val selected = state.selectedDestination == destination Box { diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabsFragment.kt index b7f4790f55..4f7827a0a8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/tabs/ConversationListTabsFragment.kt @@ -35,7 +35,8 @@ class ConversationListTabsFragment : ComposeFragment() { MainNavigationDestination.CALLS -> MainNavigationDestination.CALLS MainNavigationDestination.STORIES -> MainNavigationDestination.STORIES }, - compact = state.compact + compact = state.compact, + isStoriesFeatureEnabled = state.isStoriesFeatureEnabled ) } 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 e2e75a4a9f..ddb6c855b9 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 @@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.stories.tabs import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.main.MainNavigationDestination +import org.thoughtcrime.securesms.stories.Stories data class ConversationListTabsState( val tab: MainNavigationDestination = MainNavigationDestination.CHATS, @@ -11,7 +12,8 @@ data class ConversationListTabsState( val unreadStoriesCount: Long = 0L, val hasFailedStory: Boolean = false, val visibilityState: VisibilityState = VisibilityState(), - val compact: Boolean = SignalStore.settings.useCompactNavigationBar + val compact: Boolean = SignalStore.settings.useCompactNavigationBar, + val isStoriesFeatureEnabled: Boolean = Stories.isFeatureEnabled() ) { data class VisibilityState( val isSearchOpen: Boolean = false, 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 0f6af650bb..26791c5128 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 @@ -51,7 +51,7 @@ class ConversationListTabsViewModel(startingTab: MainNavigationDestination, repo } fun refreshNavigationBarState() { - store.update { it.copy(compact = SignalStore.settings.useCompactNavigationBar) } + store.update { it.copy(compact = SignalStore.settings.useCompactNavigationBar, isStoriesFeatureEnabled = Stories.isFeatureEnabled()) } } override fun onCleared() {