diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/RegistrationValues.kt b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/RegistrationValues.kt index 17d173cdba..fa4d6d5024 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/RegistrationValues.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/RegistrationValues.kt @@ -44,7 +44,12 @@ class RegistrationValues internal constructor(store: KeyValueStore) : SignalStor @Synchronized fun clearRegistrationComplete() { - onFirstEverAppLaunch() + store + .beginWrite() + .putBoolean(HAS_UPLOADED_PROFILE, false) + .putBoolean(REGISTRATION_COMPLETE, false) + .putBoolean(PIN_REQUIRED, true) + .commit() } @Synchronized @@ -86,8 +91,8 @@ class RegistrationValues internal constructor(store: KeyValueStore) : SignalStor var restoreDecisionState: RestoreDecisionState get() = store.getBlob(RESTORE_DECISION_STATE, null)?.let { RestoreDecisionState.ADAPTER.decode(it) } ?: RestoreDecisionState.Skipped set(newValue) { - if (isRegistrationComplete) { - Log.w(TAG, "Registration was completed, cannot change initial restore decision state") + if (isRegistrationComplete || restoreDecisionState.isTerminal) { + Log.w(TAG, "Cannot change initial restore decision state. complete: $isRegistrationComplete terminal: ${restoreDecisionState.isTerminal}") } else { Log.v(TAG, "Restore decision set: $newValue", Throwable()) store.beginWrite() diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/restore/RemoteRestoreActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/restore/RemoteRestoreActivity.kt index 4f4e5fe913..dae5a7ae13 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/restore/RemoteRestoreActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/restore/RemoteRestoreActivity.kt @@ -65,7 +65,6 @@ import org.signal.core.ui.compose.DayNightPreviews import org.signal.core.ui.compose.Dialogs import org.signal.core.ui.compose.Previews import org.signal.core.ui.compose.theme.SignalTheme -import org.signal.core.util.AppUtil import org.signal.core.util.ThreadUtil import org.signal.core.util.bytes import org.thoughtcrime.securesms.BaseActivity @@ -248,7 +247,11 @@ class RemoteRestoreActivity : BaseActivity() { .setTitle(R.string.RestoreActivity__no_longer_registered_title) .setMessage(R.string.RestoreActivity__no_longer_registered_message) .setCancelable(false) - .setPositiveButton(android.R.string.ok) { _, _ -> AppUtil.clearData(this) } + .setPositiveButton(android.R.string.ok) { _, _ -> + viewModel.skipRestore() + startActivity(MainActivity.clearTop(this)) + supportFinishAfterTransition() + } .show() } 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 3ada788453..e76c5299ab 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/restore/RestoreActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/restore/RestoreActivity.kt @@ -20,7 +20,6 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder import kotlinx.coroutines.delay import kotlinx.coroutines.isActive import kotlinx.coroutines.launch -import org.signal.core.util.AppUtil import org.signal.core.util.ThreadUtil import org.signal.core.util.getParcelableExtraCompat import org.signal.core.util.logging.Log @@ -153,7 +152,11 @@ class RestoreActivity : BaseActivity() { .setTitle(R.string.RestoreActivity__no_longer_registered_title) .setMessage(R.string.RestoreActivity__no_longer_registered_message) .setCancelable(false) - .setPositiveButton(android.R.string.ok) { _, _ -> AppUtil.clearData(this) } + .setPositiveButton(android.R.string.ok) { _, _ -> + sharedViewModel.skipRestore() + startActivity(MainActivity.clearTop(this)) + supportFinishAfterTransition() + } .show() } diff --git a/core-util/src/main/java/org/signal/core/util/AppUtil.java b/core-util/src/main/java/org/signal/core/util/AppUtil.java index 3b4afe487e..c9c690db0e 100644 --- a/core-util/src/main/java/org/signal/core/util/AppUtil.java +++ b/core-util/src/main/java/org/signal/core/util/AppUtil.java @@ -23,11 +23,4 @@ public final class AppUtil { context.startActivity(defaultIntent); Runtime.getRuntime().exit(0); } - - /** - * Clears all app data, will cause the app to stop running. - */ - public static void clearData(@NonNull Context context) { - ContextCompat.getSystemService(context, ActivityManager.class).clearApplicationUserData(); - } }