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.")