diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageAccountRestoreJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageAccountRestoreJob.java index 3efb1dc0bd..abcdca8549 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageAccountRestoreJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageAccountRestoreJob.java @@ -105,7 +105,7 @@ public class StorageAccountRestoreJob extends BaseJob { Log.i(TAG, "Applying changes locally..."); SignalDatabase.getRawDatabase().beginTransaction(); try { - StorageSyncHelper.applyAccountStorageSyncUpdates(context, Recipient.self(), accountRecord, false); + StorageSyncHelper.applyAccountStorageSyncUpdates(context, Recipient.self().fresh(), accountRecord, false); SignalDatabase.getRawDatabase().setTransactionSuccessful(); } finally { SignalDatabase.getRawDatabase().endTransaction(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/AccountValues.kt b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/AccountValues.kt index 82e5a90d3e..1d0966073a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/AccountValues.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/AccountValues.kt @@ -199,7 +199,7 @@ internal class AccountValues internal constructor(store: KeyValueStore) : Signal fun generateAciIdentityKeyIfNecessary() { synchronized(this) { if (store.containsKey(KEY_ACI_IDENTITY_PUBLIC_KEY)) { - Log.w(TAG, "Tried to generate an ANI identity, but one was already set!", Throwable()) + Log.w(TAG, "Tried to generate an ACI identity, but one was already set!", Throwable()) return } diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipient.java b/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipient.java index d65e7b3933..4391f559f7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipient.java +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipient.java @@ -157,8 +157,9 @@ public final class LiveRecipient { } @WorkerThread - public void refresh() { + public LiveRecipient refresh() { refresh(getId()); + return this; } /** diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.java b/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.java index be8aecc437..1964d87f1b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.java +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.java @@ -1196,7 +1196,7 @@ public class Recipient { * Forces retrieving a fresh copy of the recipient, regardless of its state. */ public @NonNull Recipient fresh() { - return live().resolve(); + return live().refresh().resolve(); } public @NonNull LiveRecipient live() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/storage/StorageSyncHelper.java b/app/src/main/java/org/thoughtcrime/securesms/storage/StorageSyncHelper.java index 5964bda3ef..0633a43ccb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/storage/StorageSyncHelper.java +++ b/app/src/main/java/org/thoughtcrime/securesms/storage/StorageSyncHelper.java @@ -36,6 +36,7 @@ import org.whispersystems.signalservice.api.util.UuidUtil; import org.whispersystems.signalservice.internal.storage.protos.AccountRecord; import org.whispersystems.signalservice.internal.storage.protos.OptionalBool; +import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.Locale; @@ -126,9 +127,15 @@ public final class StorageSyncHelper { record = recipientTable.getRecordForSync(self.getId()); } + if (record == null) { + Log.w(TAG, "[buildAccountRecord] Could not find a RecipientRecord for ourselves! ID: " + self.getId()); + } else if (!Arrays.equals(record.getStorageId(), self.getStorageServiceId())) { + Log.w(TAG, "[buildAccountRecord] StorageId on RecipientRecord did not match self! ID: " + self.getId()); + } + final boolean hasReadOnboardingStory = SignalStore.storyValues().getUserHasViewedOnboardingStory() || SignalStore.storyValues().getUserHasReadOnboardingStory(); - SignalAccountRecord.Builder account = new SignalAccountRecord.Builder(self.getStorageServiceId(), record != null ? record.getSyncExtras().getStorageProto() : null) + SignalAccountRecord.Builder account = new SignalAccountRecord.Builder(record != null ? record.getStorageId() : self.getStorageServiceId(), record != null ? record.getSyncExtras().getStorageProto() : null) .setProfileKey(self.getProfileKey()) .setGivenName(self.getProfileName().getGivenName()) .setFamilyName(self.getProfileName().getFamilyName())