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);