Attempt to reclaim username in more places during/after registration.

This commit is contained in:
Cody Henthorne
2025-04-03 08:12:36 -04:00
committed by Michelle Tang
parent 9d3f4ffa08
commit 7a5790a6ce
4 changed files with 15 additions and 1 deletions

View File

@@ -12,6 +12,8 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.thoughtcrime.securesms.database.model.databaseprotos.RestoreDecisionState
import org.thoughtcrime.securesms.dependencies.AppDependencies
import org.thoughtcrime.securesms.jobs.ReclaimUsernameAndLinkJob
import org.thoughtcrime.securesms.keyvalue.Completed
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.registration.util.RegistrationUtil
@@ -24,6 +26,8 @@ class NewDeviceTransferViewModel : ViewModel() {
RegistrationRepository.registerAccountLocally(context, metadata)
SignalStore.registration.localRegistrationMetadata = null
RegistrationUtil.maybeMarkRegistrationComplete()
AppDependencies.jobManager.add(ReclaimUsernameAndLinkJob())
}
SignalStore.registration.restoreDecisionState = RestoreDecisionState.Completed

View File

@@ -871,6 +871,8 @@ class RegistrationViewModel : ViewModel() {
stopwatch.split("storage-sync")
stopwatch.stop(TAG)
} else if (SignalStore.misc.needsUsernameRestore) {
AppDependencies.jobManager.runSynchronously(ReclaimUsernameAndLinkJob(), TimeUnit.SECONDS.toMillis(10))
}
refreshRemoteConfig()

View File

@@ -31,12 +31,14 @@ import org.thoughtcrime.securesms.dependencies.AppDependencies
import org.thoughtcrime.securesms.jobs.MultiDeviceProfileContentUpdateJob
import org.thoughtcrime.securesms.jobs.MultiDeviceProfileKeyUpdateJob
import org.thoughtcrime.securesms.jobs.ProfileUploadJob
import org.thoughtcrime.securesms.jobs.ReclaimUsernameAndLinkJob
import org.thoughtcrime.securesms.keyvalue.NewAccount
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.keyvalue.Skipped
import org.thoughtcrime.securesms.keyvalue.Start
import org.thoughtcrime.securesms.keyvalue.intendToRestore
import org.thoughtcrime.securesms.keyvalue.isDecisionPending
import org.thoughtcrime.securesms.keyvalue.isTerminal
import org.thoughtcrime.securesms.keyvalue.isWantingManualRemoteRestore
import org.thoughtcrime.securesms.permissions.Permissions
import org.thoughtcrime.securesms.pin.SvrRepository
@@ -891,10 +893,12 @@ class RegistrationViewModel : ViewModel() {
if (reglockEnabled || SignalStore.svr.hasOptedInWithAccess()) {
SignalStore.onboarding.clearAll()
if (!SignalStore.registration.restoreDecisionState.isDecisionPending) {
if (SignalStore.registration.restoreDecisionState.isTerminal) {
Log.d(TAG, "No pending restore decisions, can restore account from storage service")
StorageServiceRestore.restore()
}
} else if (SignalStore.registration.restoreDecisionState.isTerminal && SignalStore.misc.needsUsernameRestore) {
AppDependencies.jobManager.runSynchronously(ReclaimUsernameAndLinkJob(), 10.seconds.inWholeMilliseconds)
}
if (SignalStore.account.restoredAccountEntropyPool) {

View File

@@ -17,6 +17,8 @@ import kotlinx.coroutines.launch
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.backup.BackupEvent
import org.thoughtcrime.securesms.database.model.databaseprotos.RestoreDecisionState
import org.thoughtcrime.securesms.dependencies.AppDependencies
import org.thoughtcrime.securesms.jobs.ReclaimUsernameAndLinkJob
import org.thoughtcrime.securesms.keyvalue.Completed
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.registration.data.RegistrationRepository
@@ -94,6 +96,8 @@ class RestoreLocalBackupViewModel(fileBackupUri: Uri) : ViewModel() {
RegistrationRepository.registerAccountLocally(context, it)
SignalStore.registration.localRegistrationMetadata = null
RegistrationUtil.maybeMarkRegistrationComplete()
AppDependencies.jobManager.add(ReclaimUsernameAndLinkJob())
}
SignalStore.registration.restoreDecisionState = RestoreDecisionState.Completed