From 4447b29e6c5d56473ec8e78c807bfb330ef161a9 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Thu, 25 Sep 2025 13:27:07 -0400 Subject: [PATCH] Fix upload to archive running while not on wifi. --- .../thoughtcrime/securesms/database/AttachmentTable.kt | 2 +- .../securesms/jobs/ArchiveThumbnailUploadJob.kt | 9 +++++++-- .../securesms/jobs/UploadAttachmentToArchiveJob.kt | 9 +++++++-- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentTable.kt index 6fa6102998..dff80c34e2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentTable.kt @@ -856,7 +856,7 @@ class AttachmentTable( .where( """ $ARCHIVE_TRANSFER_STATE = ${ArchiveTransferState.FINISHED.value} AND - $ARCHIVE_THUMBNAIL_TRANSFER_STATE = ${ArchiveTransferState.NONE.value} AND + $ARCHIVE_THUMBNAIL_TRANSFER_STATE IN (${ArchiveTransferState.NONE.value}, ${ArchiveTransferState.TEMPORARY_FAILURE.value}) AND $QUOTE = 0 AND ($CONTENT_TYPE LIKE 'image/%' OR $CONTENT_TYPE LIKE 'video/%') AND $CONTENT_TYPE != 'image/svg+xml' diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/ArchiveThumbnailUploadJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/ArchiveThumbnailUploadJob.kt index d6869bcc3a..4111692da1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/ArchiveThumbnailUploadJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/ArchiveThumbnailUploadJob.kt @@ -18,7 +18,7 @@ import org.thoughtcrime.securesms.database.AttachmentTable import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.dependencies.AppDependencies import org.thoughtcrime.securesms.jobmanager.Job -import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint +import org.thoughtcrime.securesms.jobmanager.impl.BackupMessagesConstraint import org.thoughtcrime.securesms.jobmanager.impl.NoRemoteArchiveGarbageCollectionPendingConstraint import org.thoughtcrime.securesms.jobmanager.persistence.JobSpec import org.thoughtcrime.securesms.jobs.protos.ArchiveThumbnailUploadJobData @@ -79,7 +79,7 @@ class ArchiveThumbnailUploadJob private constructor( constructor(attachmentId: AttachmentId) : this( Parameters.Builder() .setQueue(QUEUES.random()) - .addConstraint(NetworkConstraint.KEY) + .addConstraint(BackupMessagesConstraint.KEY) .addConstraint(NoRemoteArchiveGarbageCollectionPendingConstraint.KEY) .setLifespan(1.days.inWholeMilliseconds) .setMaxAttempts(Parameters.UNLIMITED) @@ -105,6 +105,11 @@ class ArchiveThumbnailUploadJob private constructor( } override fun run(): Result { + // TODO [cody] Remove after a few releases as we migrate to the correct constraint + if (!BackupMessagesConstraint.isMet(context)) { + return Result.failure() + } + val attachment = SignalDatabase.attachments.getAttachment(attachmentId) if (attachment == null) { Log.w(TAG, "$attachmentId not found, assuming this job is no longer necessary.") diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/UploadAttachmentToArchiveJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/UploadAttachmentToArchiveJob.kt index 256a2e179a..e0d934469d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/UploadAttachmentToArchiveJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/UploadAttachmentToArchiveJob.kt @@ -21,7 +21,7 @@ import org.thoughtcrime.securesms.database.AttachmentTable import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.dependencies.AppDependencies import org.thoughtcrime.securesms.jobmanager.Job -import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint +import org.thoughtcrime.securesms.jobmanager.impl.BackupMessagesConstraint import org.thoughtcrime.securesms.jobs.protos.UploadAttachmentToArchiveJobData import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.net.SignalNetwork @@ -76,7 +76,7 @@ class UploadAttachmentToArchiveJob private constructor( uploadSpec = null, canReuseUpload = canReuseUpload, parameters = Parameters.Builder() - .addConstraint(NetworkConstraint.KEY) + .addConstraint(BackupMessagesConstraint.KEY) .setLifespan(30.days.inWholeMilliseconds) .setMaxAttempts(Parameters.UNLIMITED) .setQueue(QUEUES.random()) @@ -102,6 +102,11 @@ class UploadAttachmentToArchiveJob private constructor( } override fun run(): Result { + // TODO [cody] Remove after a few releases as we migrate to the correct constraint + if (!BackupMessagesConstraint.isMet(context)) { + return Result.failure() + } + if (SignalStore.account.isLinkedDevice) { Log.w(TAG, "[$attachmentId] Linked devices don't backup media. Skipping.") SignalDatabase.attachments.setArchiveTransferState(attachmentId, AttachmentTable.ArchiveTransferState.NONE)