mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-20 11:08:31 +00:00
Fix account inconsistency reset causing restore flow to show bug.
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user