From a6816df0e86359d9f554190bf75e088997bea23d Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Fri, 8 May 2026 12:52:18 -0400 Subject: [PATCH] Fix username relost due to bad needs restore state. --- .../thoughtcrime/securesms/jobs/RefreshOwnProfileJob.kt | 7 +++++++ .../securesms/profiles/manage/UsernameRepository.kt | 3 +++ 2 files changed, 10 insertions(+) diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshOwnProfileJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshOwnProfileJob.kt index a694678376..d0a453661f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshOwnProfileJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RefreshOwnProfileJob.kt @@ -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 } diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameRepository.kt index 5957fec078..157c185958 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/UsernameRepository.kt @@ -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.")