diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsNavHostFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsNavHostFragment.kt index 0dead83c2d..81594d0866 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsNavHostFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsNavHostFragment.kt @@ -9,13 +9,17 @@ import android.os.Bundle import androidx.core.os.bundleOf import androidx.navigation.fragment.NavHostFragment import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map import kotlinx.coroutines.withContext import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.settings.DSLSettingsActivity +import org.thoughtcrime.securesms.compose.FragmentBackPressedInfo +import org.thoughtcrime.securesms.compose.FragmentBackPressedInfoProvider import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.RecipientId -class ConversationSettingsNavHostFragment : NavHostFragment() { +class ConversationSettingsNavHostFragment : NavHostFragment(), FragmentBackPressedInfoProvider { companion object { suspend fun createArgs(recipientId: RecipientId): Bundle { @@ -36,4 +40,14 @@ class ConversationSettingsNavHostFragment : NavHostFragment() { navController.setGraph(R.navigation.conversation_settings, args) super.onCreate(savedInstanceState) } + + override fun getFragmentBackPressedInfo(): Flow { + return navController.currentBackStackEntryFlow.map { + if (navController.previousBackStackEntry != null) { + FragmentBackPressedInfo.Enabled { navController.popBackStack() } + } else { + FragmentBackPressedInfo.Disabled + } + } + } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/main/ChatsNavHost.kt b/app/src/main/java/org/thoughtcrime/securesms/main/ChatsNavHost.kt index c978373e9a..7712a08833 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/main/ChatsNavHost.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/main/ChatsNavHost.kt @@ -197,6 +197,9 @@ fun NavGraphBuilder.chatNavGraphBuilder( } arguments?.let { args -> + val backPressedState = remember { FragmentBackPressedState() } + FragmentBackHandler(backPressedState) + AndroidFragment( clazz = ConversationSettingsNavHostFragment::class.java, fragmentState = fragmentState, @@ -206,7 +209,9 @@ fun NavGraphBuilder.chatNavGraphBuilder( .background(MaterialTheme.colorScheme.background) .statusBarsPadding() .navigationBarsPadding() - ) + ) { fragment -> + backPressedState.attach(fragment) + } } } }