Check for restorable previously optimized media and restore if necessary.

This commit is contained in:
Cody Henthorne
2024-09-24 11:41:50 -04:00
committed by Greyson Parrelli
parent d81182633d
commit 5552455c2e
2 changed files with 20 additions and 3 deletions

View File

@@ -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");

View File

@@ -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,