diff --git a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java index 5792953542..27c1f7cd13 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java +++ b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java @@ -69,6 +69,7 @@ import org.thoughtcrime.securesms.jobs.PnpInitializeDevicesJob; import org.thoughtcrime.securesms.jobs.PreKeysSyncJob; import org.thoughtcrime.securesms.jobs.ProfileUploadJob; import org.thoughtcrime.securesms.jobs.RefreshSvrCredentialsJob; +import org.thoughtcrime.securesms.jobs.RestoreOptimizedMediaJob; import org.thoughtcrime.securesms.jobs.RetrieveProfileJob; import org.thoughtcrime.securesms.jobs.RetrieveRemoteAnnouncementsJob; import org.thoughtcrime.securesms.jobs.StoryOnboardingDownloadJob; @@ -223,6 +224,7 @@ public class ApplicationContext extends Application implements AppForegroundObse .addPostRender(LinkedDeviceInactiveCheckJob::enqueueIfNecessary) .addPostRender(() -> ActiveCallManager.clearNotifications(this)) .addPostRender(() -> GroupSendEndorsementInternalNotifier.init()) + .addPostRender(RestoreOptimizedMediaJob::enqueueIfNecessary) .execute(); Log.d(TAG, "onCreate() took " + (System.currentTimeMillis() - startTime) + " ms"); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RestoreOptimizedMediaJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/RestoreOptimizedMediaJob.kt index e5a97f033f..5591ae4ff8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RestoreOptimizedMediaJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RestoreOptimizedMediaJob.kt @@ -23,6 +23,13 @@ class RestoreOptimizedMediaJob private constructor(parameters: Parameters) : Job val job = RestoreOptimizedMediaJob() AppDependencies.jobManager.add(job) } + + @JvmStatic + fun enqueueIfNecessary() { + if (SignalStore.backup.backsUpMedia && !SignalStore.backup.optimizeStorage) { + AppDependencies.jobManager.add(RestoreOptimizedMediaJob()) + } + } } private constructor() : this( @@ -34,11 +41,19 @@ class RestoreOptimizedMediaJob private constructor(parameters: Parameters) : Job ) override fun run(): Result { + if (SignalStore.backup.optimizeStorage) { + return Result.success() + } + + val restorableAttachments = SignalDatabase.attachments.getRestorableOptimizedAttachments() + + if (restorableAttachments.isEmpty()) { + return Result.success() + } + val jobManager = AppDependencies.jobManager - SignalDatabase - .attachments - .getRestorableOptimizedAttachments() + restorableAttachments .forEach { val job = RestoreAttachmentJob.forOffloadedRestore( messageId = it.mmsId,