From 2389279cfd1e55ce669dfe3a66addb26c50830a1 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Wed, 10 Jun 2026 15:33:50 -0400 Subject: [PATCH] Prevent exported settings activity from honoring caller-supplied navigation graph. --- .../securesms/components/settings/DSLSettingsActivity.kt | 8 ++++++-- .../components/settings/app/AppSettingsActivity.kt | 8 ++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsActivity.kt index e860446998..59b7743999 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsActivity.kt @@ -25,12 +25,12 @@ open class DSLSettingsActivity : PassphraseRequiredActivity() { setContentView(R.layout.dsl_settings_activity) if (savedInstanceState == null) { - val navGraphId = intent.getIntExtra(ARG_NAV_GRAPH, -1) + val navGraphId = resolveNavGraphId() if (navGraphId == -1) { throw IllegalStateException("No navgraph id was passed to activity") } - val fragment: NavHostFragment = NavHostFragment.create(navGraphId, intent.getBundleExtra(ARG_START_BUNDLE)) + val fragment: NavHostFragment = NavHostFragment.create(navGraphId, resolveStartBundle()) supportFragmentManager.beginTransaction() .replace(R.id.nav_host_fragment, fragment) @@ -64,6 +64,10 @@ open class DSLSettingsActivity : PassphraseRequiredActivity() { protected open fun onWillFinish() {} + protected open fun resolveNavGraphId(): Int = intent.getIntExtra(ARG_NAV_GRAPH, -1) + + protected open fun resolveStartBundle(): Bundle? = intent.getBundleExtra(ARG_START_BUNDLE) + companion object { const val ARG_NAV_GRAPH = "nav_graph" const val ARG_START_BUNDLE = "start_bundle" diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsActivity.kt index a76ee96785..30a15b3bd0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsActivity.kt @@ -45,10 +45,6 @@ class AppSettingsActivity : DSLSettingsActivity(), GooglePayComponent { override val googlePayResultPublisher: Subject = PublishSubject.create() override fun onCreate(savedInstanceState: Bundle?, ready: Boolean) { - if (intent?.hasExtra(ARG_NAV_GRAPH) != true) { - intent?.putExtra(ARG_NAV_GRAPH, R.navigation.app_settings_with_change_number) - } - super.onCreate(savedInstanceState, ready) val startingAction: NavDirections? = if (intent?.categories?.contains(NOTIFICATION_CATEGORY) == true) { @@ -152,6 +148,10 @@ class AppSettingsActivity : DSLSettingsActivity(), GooglePayComponent { } } + override fun resolveNavGraphId(): Int = R.navigation.app_settings_with_change_number + + override fun resolveStartBundle(): Bundle? = null + @Suppress("DEPRECATION") override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data)