Add additional account restore logging, prevent double avatar fetch.

This commit is contained in:
Greyson Parrelli 2020-05-22 13:02:33 -04:00
parent 67a8ec0d39
commit 9d39db6428
2 changed files with 30 additions and 6 deletions

View file

@ -1,11 +1,14 @@
package org.thoughtcrime.securesms.jobs; package org.thoughtcrime.securesms.jobs;
import android.app.job.JobScheduler;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.Job;
import org.thoughtcrime.securesms.jobmanager.JobManager; import org.thoughtcrime.securesms.jobmanager.JobManager;
import org.thoughtcrime.securesms.jobmanager.JobTracker;
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.logging.Log;
@ -67,6 +70,7 @@ public class StorageAccountRestoreJob extends BaseJob {
SignalServiceAccountManager accountManager = ApplicationDependencies.getSignalServiceAccountManager(); SignalServiceAccountManager accountManager = ApplicationDependencies.getSignalServiceAccountManager();
StorageKey storageServiceKey = SignalStore.storageServiceValues().getOrCreateStorageKey(); StorageKey storageServiceKey = SignalStore.storageServiceValues().getOrCreateStorageKey();
Log.i(TAG, "Retrieving manifest...");
Optional<SignalStorageManifest> manifest = accountManager.getStorageManifest(storageServiceKey); Optional<SignalStorageManifest> manifest = accountManager.getStorageManifest(storageServiceKey);
if (!manifest.isPresent()) { if (!manifest.isPresent()) {
@ -82,6 +86,7 @@ public class StorageAccountRestoreJob extends BaseJob {
return; return;
} }
Log.i(TAG, "Retrieving account record...");
List<SignalStorageRecord> records = accountManager.readStorageRecords(storageServiceKey, Collections.singletonList(accountId.get())); List<SignalStorageRecord> records = accountManager.readStorageRecords(storageServiceKey, Collections.singletonList(accountId.get()));
SignalStorageRecord record = records.size() > 0 ? records.get(0) : null; SignalStorageRecord record = records.size() > 0 ? records.get(0) : null;
@ -96,16 +101,34 @@ public class StorageAccountRestoreJob extends BaseJob {
return; return;
} }
Log.i(TAG, "Applying changes locally...");
StorageId selfStorageId = StorageId.forAccount(Recipient.self().getStorageServiceId()); StorageId selfStorageId = StorageId.forAccount(Recipient.self().getStorageServiceId());
StorageSyncHelper.applyAccountStorageSyncUpdates(context, selfStorageId, accountRecord); StorageSyncHelper.applyAccountStorageSyncUpdates(context, selfStorageId, accountRecord, false);
JobManager jobManager = ApplicationDependencies.getJobManager(); JobManager jobManager = ApplicationDependencies.getJobManager();
if (accountRecord.getAvatarUrlPath().isPresent()) { if (accountRecord.getAvatarUrlPath().isPresent()) {
jobManager.runSynchronously(new RetrieveProfileAvatarJob(Recipient.self(), accountRecord.getAvatarUrlPath().get()), LIFESPAN/2); Log.i(TAG, "Fetching avatar...");
Optional<JobTracker.JobState> state = jobManager.runSynchronously(new RetrieveProfileAvatarJob(Recipient.self(), accountRecord.getAvatarUrlPath().get()), LIFESPAN/2);
if (state.isPresent()) {
Log.i(TAG, "Avatar retrieved successfully. " + state.get());
} else {
Log.w(TAG, "Avatar retrieval did not complete in time (or otherwise failed).");
}
} else {
Log.i(TAG, "No avatar present. Not fetching.");
} }
jobManager.runSynchronously(new RefreshAttributesJob(), LIFESPAN/2); Log.i(TAG, "Refreshing attributes...");
Optional<JobTracker.JobState> state = jobManager.runSynchronously(new RefreshAttributesJob(), LIFESPAN/2);
if (state.isPresent()) {
Log.i(TAG, "Attributes refreshed successfully. " + state.get());
} else {
Log.w(TAG, "Attribute refresh did not complete in time (or otherwise failed).");
}
} }
@Override @Override

View file

@ -404,10 +404,10 @@ public final class StorageSyncHelper {
if (!update.isPresent()) { if (!update.isPresent()) {
return; return;
} }
applyAccountStorageSyncUpdates(context, update.get().getOld().getId(), update.get().getNew()); applyAccountStorageSyncUpdates(context, update.get().getOld().getId(), update.get().getNew(), true);
} }
public static void applyAccountStorageSyncUpdates(@NonNull Context context, @NonNull StorageId storageId, @NonNull SignalAccountRecord update) { public static void applyAccountStorageSyncUpdates(@NonNull Context context, @NonNull StorageId storageId, @NonNull SignalAccountRecord update, boolean fetchProfile) {
DatabaseFactory.getRecipientDatabase(context).applyStorageSyncUpdates(storageId, update); DatabaseFactory.getRecipientDatabase(context).applyStorageSyncUpdates(storageId, update);
DatabaseFactory.getThreadDatabase(context).setArchived(Recipient.self().getId(), update.isNoteToSelfArchived()); DatabaseFactory.getThreadDatabase(context).setArchived(Recipient.self().getId(), update.isNoteToSelfArchived());
@ -415,7 +415,8 @@ public final class StorageSyncHelper {
TextSecurePreferences.setTypingIndicatorsEnabled(context, update.isTypingIndicatorsEnabled()); TextSecurePreferences.setTypingIndicatorsEnabled(context, update.isTypingIndicatorsEnabled());
TextSecurePreferences.setShowUnidentifiedDeliveryIndicatorsEnabled(context, update.isSealedSenderIndicatorsEnabled()); TextSecurePreferences.setShowUnidentifiedDeliveryIndicatorsEnabled(context, update.isSealedSenderIndicatorsEnabled());
TextSecurePreferences.setLinkPreviewsEnabled(context, update.isLinkPreviewsEnabled()); TextSecurePreferences.setLinkPreviewsEnabled(context, update.isLinkPreviewsEnabled());
if (update.getAvatarUrlPath().isPresent()) {
if (fetchProfile && update.getAvatarUrlPath().isPresent()) {
ApplicationDependencies.getJobManager().add(new RetrieveProfileAvatarJob(Recipient.self(), update.getAvatarUrlPath().get())); ApplicationDependencies.getJobManager().add(new RetrieveProfileAvatarJob(Recipient.self(), update.getAvatarUrlPath().get()));
} }
} }