diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index eea157e261..aab652a4f2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -522,6 +522,13 @@
+
+
{
- context.startActivity(AppSettingsActivity.proxy(context));
+ context.startActivity(EditProxyActivity.intent(context));
return Unit.INSTANCE;
},
(context, subject) -> {
diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/EditProxyActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/preferences/EditProxyActivity.kt
new file mode 100644
index 0000000000..dfeb2d5d41
--- /dev/null
+++ b/app/src/main/java/org/thoughtcrime/securesms/preferences/EditProxyActivity.kt
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2026 Signal Messenger, LLC
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+package org.thoughtcrime.securesms.preferences
+
+import android.content.Context
+import android.content.Intent
+import android.os.Bundle
+import androidx.navigation.fragment.NavHostFragment
+import org.thoughtcrime.securesms.BaseActivity
+import org.thoughtcrime.securesms.R
+import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme
+import org.thoughtcrime.securesms.util.DynamicTheme
+
+/**
+ * Standalone host for [EditProxyFragment], usable during registration before the user is registered.
+ * Unlike [org.thoughtcrime.securesms.components.settings.app.AppSettingsActivity], this does not extend
+ * PassphraseRequiredActivity, so it won't reroute an unregistered user back into the registration flow.
+ */
+class EditProxyActivity : BaseActivity() {
+
+ private val dynamicTheme: DynamicTheme = DynamicNoActionBarTheme()
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ dynamicTheme.onCreate(this)
+
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.dsl_settings_activity)
+
+ if (savedInstanceState == null) {
+ val fragment = NavHostFragment.create(R.navigation.edit_proxy)
+ supportFragmentManager.beginTransaction()
+ .replace(R.id.nav_host_fragment, fragment)
+ .commitNow()
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ dynamicTheme.onResume(this)
+ }
+
+ companion object {
+ @JvmStatic
+ fun intent(context: Context): Intent = Intent(context, EditProxyActivity::class.java)
+ }
+}
diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/EditProxyFragment.java b/app/src/main/java/org/thoughtcrime/securesms/preferences/EditProxyFragment.java
index 297a9f1952..36c8d26752 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/preferences/EditProxyFragment.java
+++ b/app/src/main/java/org/thoughtcrime/securesms/preferences/EditProxyFragment.java
@@ -57,7 +57,11 @@ public class EditProxyFragment extends Fragment {
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
Toolbar toolbar = view.findViewById(R.id.toolbar);
- toolbar.setNavigationOnClickListener(v -> Navigation.findNavController(v).popBackStack());
+ toolbar.setNavigationOnClickListener(v -> {
+ if (!Navigation.findNavController(v).popBackStack()) {
+ requireActivity().finish();
+ }
+ });
this.proxySwitch = view.findViewById(R.id.edit_proxy_switch);
this.proxyTitle = view.findViewById(R.id.edit_proxy_address_title);