Fix username relost due to bad needs restore state.

This commit is contained in:
Cody Henthorne
2026-05-08 12:52:18 -04:00
parent 5b8c894512
commit a6816df0e8
2 changed files with 10 additions and 0 deletions
@@ -21,6 +21,7 @@ import org.thoughtcrime.securesms.dependencies.AppDependencies
import org.thoughtcrime.securesms.jobmanager.Job
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.keyvalue.isTerminal
import org.thoughtcrime.securesms.net.SignalNetwork
import org.thoughtcrime.securesms.profiles.ProfileName
import org.thoughtcrime.securesms.profiles.manage.UsernameRepository
@@ -399,6 +400,12 @@ class RefreshOwnProfileJob private constructor(parameters: Parameters) : BaseJob
private fun checkUsernameIsInSync() {
if (SignalStore.misc.needsUsernameRestore) {
Log.d(TAG, "Username restore is still pending. Skipping consistency check.")
if (SignalStore.account.isRegistered && SignalStore.account.aci != null && SignalStore.registration.restoreDecisionState.isTerminal) {
AppDependencies.jobManager
.startChain(ReclaimUsernameAndLinkJob())
.then(RefreshOwnProfileJob())
.enqueue()
}
return
}
@@ -442,6 +442,7 @@ object UsernameRepository {
SignalDatabase.recipients.setUsername(Recipient.self().id, updatedUsername.username)
SignalStore.account.usernameSyncState = AccountValues.UsernameSyncState.IN_SYNC
SignalStore.account.usernameSyncErrorCount = 0
SignalStore.misc.needsUsernameRestore = false
SignalDatabase.recipients.markNeedsSync(Recipient.self().id)
StorageSyncHelper.scheduleSyncForDataChange()
@@ -474,6 +475,7 @@ object UsernameRepository {
SignalDatabase.recipients.setUsername(Recipient.self().id, username.username)
SignalStore.account.usernameSyncState = AccountValues.UsernameSyncState.IN_SYNC
SignalStore.account.usernameSyncErrorCount = 0
SignalStore.misc.needsUsernameRestore = false
SignalDatabase.recipients.markNeedsSync(Recipient.self().id)
StorageSyncHelper.scheduleSyncForDataChange()
@@ -531,6 +533,7 @@ object UsernameRepository {
SignalStore.account.usernameLink = null
SignalStore.account.usernameSyncState = AccountValues.UsernameSyncState.IN_SYNC
SignalStore.account.usernameSyncErrorCount = 0
SignalStore.misc.needsUsernameRestore = false
SignalDatabase.recipients.markNeedsSync(Recipient.self().id)
StorageSyncHelper.scheduleSyncForDataChange()
Log.i(TAG, "[deleteUsername] Successfully deleted the username.")