From ed3c5ab479ee50804dd3b1ee098f3fd26542a7d3 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Mon, 17 May 2021 10:15:14 -0400 Subject: [PATCH] Do more to ensure that we have the latest self in StorageSyncJob. --- .../securesms/jobs/StorageSyncJob.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.java index 87b7a5873..44f4bff01 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJob.java @@ -216,14 +216,14 @@ public class StorageSyncJob extends BaseJob { stopwatch.split("remote-manifest"); - Recipient self = Recipient.self().fresh(); + Recipient self = freshSelf(); boolean needsMultiDeviceSync = false; boolean needsForcePush = false; if (self.getStorageServiceId() == null) { Log.w(TAG, "No storageId for self. Generating."); DatabaseFactory.getRecipientDatabase(context).updateStorageId(self.getId(), StorageSyncHelper.generateKey()); - self = Recipient.self().fresh(); + self = freshSelf(); } Log.i(TAG, "Our version: " + localManifest.getVersion() + ", their version: " + remoteManifest.getVersion()); @@ -276,15 +276,14 @@ public class StorageSyncJob extends BaseJob { db.beginTransaction(); try { - self = Recipient.self().fresh(); + self = freshSelf(); new ContactRecordProcessor(context, self).process(remoteContacts, StorageSyncHelper.KEY_GENERATOR); new GroupV1RecordProcessor(context).process(remoteGv1, StorageSyncHelper.KEY_GENERATOR); new GroupV2RecordProcessor(context).process(remoteGv2, StorageSyncHelper.KEY_GENERATOR); + self = freshSelf(); new AccountRecordProcessor(context, self).process(remoteAccount, StorageSyncHelper.KEY_GENERATOR); - self = Recipient.self().fresh(); - List unknownInserts = remoteUnknown; List unknownDeletes = Stream.of(idDifference.getLocalOnlyIds()).filter(StorageId::isUnknown).toList(); @@ -317,7 +316,7 @@ public class StorageSyncJob extends BaseJob { db.beginTransaction(); try { - self = Recipient.self().fresh(); + self = freshSelf(); List localStorageIds = getAllLocalStorageIds(context, self); IdDifferenceResult idDifference = StorageSyncHelper.findIdDifference(remoteManifest.getStorageIds(), localStorageIds); @@ -420,6 +419,11 @@ public class StorageSyncJob extends BaseJob { return records; } + private static @NonNull Recipient freshSelf() { + Recipient.self().live().refresh(); + return Recipient.self(); + } + private static final class MissingGv2MasterKeyError extends Error {} private static final class MissingRecipientModelError extends Error {