Fix account inconsistency reset causing restore flow to show bug.

This commit is contained in:
Cody Henthorne
2025-11-04 10:55:16 -05:00
parent 6d5bb65c19
commit 2b2e3e1d02
4 changed files with 18 additions and 14 deletions

View File

@@ -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()

View File

@@ -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()
}

View File

@@ -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()
}

View File

@@ -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();
}
}