mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-20 19:18:37 +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
|
@Synchronized
|
||||||
fun clearRegistrationComplete() {
|
fun clearRegistrationComplete() {
|
||||||
onFirstEverAppLaunch()
|
store
|
||||||
|
.beginWrite()
|
||||||
|
.putBoolean(HAS_UPLOADED_PROFILE, false)
|
||||||
|
.putBoolean(REGISTRATION_COMPLETE, false)
|
||||||
|
.putBoolean(PIN_REQUIRED, true)
|
||||||
|
.commit()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
@@ -86,8 +91,8 @@ class RegistrationValues internal constructor(store: KeyValueStore) : SignalStor
|
|||||||
var restoreDecisionState: RestoreDecisionState
|
var restoreDecisionState: RestoreDecisionState
|
||||||
get() = store.getBlob(RESTORE_DECISION_STATE, null)?.let { RestoreDecisionState.ADAPTER.decode(it) } ?: RestoreDecisionState.Skipped
|
get() = store.getBlob(RESTORE_DECISION_STATE, null)?.let { RestoreDecisionState.ADAPTER.decode(it) } ?: RestoreDecisionState.Skipped
|
||||||
set(newValue) {
|
set(newValue) {
|
||||||
if (isRegistrationComplete) {
|
if (isRegistrationComplete || restoreDecisionState.isTerminal) {
|
||||||
Log.w(TAG, "Registration was completed, cannot change initial restore decision state")
|
Log.w(TAG, "Cannot change initial restore decision state. complete: $isRegistrationComplete terminal: ${restoreDecisionState.isTerminal}")
|
||||||
} else {
|
} else {
|
||||||
Log.v(TAG, "Restore decision set: $newValue", Throwable())
|
Log.v(TAG, "Restore decision set: $newValue", Throwable())
|
||||||
store.beginWrite()
|
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.Dialogs
|
||||||
import org.signal.core.ui.compose.Previews
|
import org.signal.core.ui.compose.Previews
|
||||||
import org.signal.core.ui.compose.theme.SignalTheme
|
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.ThreadUtil
|
||||||
import org.signal.core.util.bytes
|
import org.signal.core.util.bytes
|
||||||
import org.thoughtcrime.securesms.BaseActivity
|
import org.thoughtcrime.securesms.BaseActivity
|
||||||
@@ -248,7 +247,11 @@ class RemoteRestoreActivity : BaseActivity() {
|
|||||||
.setTitle(R.string.RestoreActivity__no_longer_registered_title)
|
.setTitle(R.string.RestoreActivity__no_longer_registered_title)
|
||||||
.setMessage(R.string.RestoreActivity__no_longer_registered_message)
|
.setMessage(R.string.RestoreActivity__no_longer_registered_message)
|
||||||
.setCancelable(false)
|
.setCancelable(false)
|
||||||
.setPositiveButton(android.R.string.ok) { _, _ -> AppUtil.clearData(this) }
|
.setPositiveButton(android.R.string.ok) { _, _ ->
|
||||||
|
viewModel.skipRestore()
|
||||||
|
startActivity(MainActivity.clearTop(this))
|
||||||
|
supportFinishAfterTransition()
|
||||||
|
}
|
||||||
.show()
|
.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
|||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.isActive
|
import kotlinx.coroutines.isActive
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import org.signal.core.util.AppUtil
|
|
||||||
import org.signal.core.util.ThreadUtil
|
import org.signal.core.util.ThreadUtil
|
||||||
import org.signal.core.util.getParcelableExtraCompat
|
import org.signal.core.util.getParcelableExtraCompat
|
||||||
import org.signal.core.util.logging.Log
|
import org.signal.core.util.logging.Log
|
||||||
@@ -153,7 +152,11 @@ class RestoreActivity : BaseActivity() {
|
|||||||
.setTitle(R.string.RestoreActivity__no_longer_registered_title)
|
.setTitle(R.string.RestoreActivity__no_longer_registered_title)
|
||||||
.setMessage(R.string.RestoreActivity__no_longer_registered_message)
|
.setMessage(R.string.RestoreActivity__no_longer_registered_message)
|
||||||
.setCancelable(false)
|
.setCancelable(false)
|
||||||
.setPositiveButton(android.R.string.ok) { _, _ -> AppUtil.clearData(this) }
|
.setPositiveButton(android.R.string.ok) { _, _ ->
|
||||||
|
sharedViewModel.skipRestore()
|
||||||
|
startActivity(MainActivity.clearTop(this))
|
||||||
|
supportFinishAfterTransition()
|
||||||
|
}
|
||||||
.show()
|
.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,11 +23,4 @@ public final class AppUtil {
|
|||||||
context.startActivity(defaultIntent);
|
context.startActivity(defaultIntent);
|
||||||
Runtime.getRuntime().exit(0);
|
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