From 90201a464dc2db225cd47858a8bd7bd74f99c87d Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Wed, 22 Oct 2025 15:33:43 -0400 Subject: [PATCH] Fix invalid navigation to remote restore activity post registration. --- .../securesms/restore/RestoreActivity.kt | 21 ++++++++++++++----- .../securesms/restore/RestoreViewModel.kt | 4 ++-- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/restore/RestoreActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/restore/RestoreActivity.kt index dfca4dcdf9..fd6c79bec5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/restore/RestoreActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/restore/RestoreActivity.kt @@ -25,10 +25,10 @@ import org.signal.core.util.ThreadUtil import org.signal.core.util.getParcelableExtraCompat import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.BaseActivity +import org.thoughtcrime.securesms.MainActivity import org.thoughtcrime.securesms.PassphraseRequiredActivity import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.RestoreDirections -import org.thoughtcrime.securesms.registration.ui.restore.RemoteRestoreActivity import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme import org.thoughtcrime.securesms.util.TextSecurePreferences import org.thoughtcrime.securesms.util.navigation.safeNavigate @@ -73,9 +73,20 @@ class RestoreActivity : BaseActivity() { when (navTarget) { NavTarget.NEW_LANDING -> { - if (!sharedViewModel.hasMultipleRestoreMethods()) { - startActivity(RemoteRestoreActivity.getIntent(this, isOnlyOption = true)) - finish() + if (sharedViewModel.hasNoRestoreMethods()) { + Log.i(TAG, "No restore methods available, skipping") + sharedViewModel.skipRestore() + + val nextIntent = sharedViewModel.getNextIntent() + + if (nextIntent != null) { + Log.d(TAG, "Launching ${nextIntent.component}") + startActivity(nextIntent) + } else { + startActivity(MainActivity.clearTop(this)) + } + + supportFinishAfterTransition() } } NavTarget.LOCAL_RESTORE -> navController.safeNavigate(RestoreDirections.goDirectlyToChooseLocalBackup()) @@ -120,7 +131,7 @@ class RestoreActivity : BaseActivity() { fun onBackupCompletedSuccessfully() { sharedViewModel.getNextIntent()?.let { - Log.d(TAG, "Launching ${it.component}", Throwable()) + Log.d(TAG, "Launching ${it.component}") startActivity(it) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/restore/RestoreViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/restore/RestoreViewModel.kt index 0b21b42167..29523a3803 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/restore/RestoreViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/restore/RestoreViewModel.kt @@ -53,8 +53,8 @@ class RestoreViewModel : ViewModel() { fun getNextIntent(): Intent? = store.value.nextIntent - fun hasMultipleRestoreMethods(): Boolean { - return getAvailableRestoreMethods().size > 1 + fun hasNoRestoreMethods(): Boolean { + return getAvailableRestoreMethods().isEmpty() } fun getAvailableRestoreMethods(): List {