mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-21 02:08:40 +00:00
Fix various issues with optimized media.
This commit is contained in:
@@ -589,6 +589,10 @@ object BackupRepository {
|
||||
|
||||
@JvmStatic
|
||||
fun maybeFixAnyDanglingUploadProgress() {
|
||||
if (SignalStore.account.isLinkedDevice) {
|
||||
return
|
||||
}
|
||||
|
||||
if (SignalStore.backup.archiveUploadState?.backupPhase == ArchiveUploadProgressState.BackupPhase.Message && AppDependencies.jobManager.find { it.factoryKey == BackupMessagesJob.KEY }.isEmpty()) {
|
||||
SignalStore.backup.archiveUploadState = null
|
||||
BackupMessagesJob.enqueue()
|
||||
|
||||
@@ -403,7 +403,7 @@ public class ThumbnailView extends FrameLayout {
|
||||
}
|
||||
|
||||
if (hasSameContents(this.slide, slide)) {
|
||||
Log.i(TAG, "Not re-loading slide " + slide.asAttachment().getUri());
|
||||
Log.i(TAG, "Not re-loading slide " + slide.asAttachment().getDisplayUri());
|
||||
return new SettableFuture<>(false);
|
||||
}
|
||||
|
||||
|
||||
@@ -869,6 +869,7 @@ class AttachmentTable(
|
||||
"""
|
||||
${buildAttachmentsThatNeedUploadQuery("$ARCHIVE_THUMBNAIL_TRANSFER_STATE IN (${ArchiveTransferState.NONE.value}, ${ArchiveTransferState.TEMPORARY_FAILURE.value})")} AND
|
||||
$QUOTE = 0 AND
|
||||
$STICKER_ID = -1 AND
|
||||
($CONTENT_TYPE LIKE 'image/%' OR $CONTENT_TYPE LIKE 'video/%') AND
|
||||
$CONTENT_TYPE != 'image/svg+xml' AND
|
||||
$MESSAGE_ID != $WALLPAPER_MESSAGE_ID
|
||||
@@ -888,6 +889,7 @@ class AttachmentTable(
|
||||
"""
|
||||
${buildAttachmentsThatNeedUploadQuery("$ARCHIVE_THUMBNAIL_TRANSFER_STATE IN (${ArchiveTransferState.NONE.value}, ${ArchiveTransferState.TEMPORARY_FAILURE.value})")} AND
|
||||
$QUOTE = 0 AND
|
||||
$STICKER_ID = -1 AND
|
||||
($CONTENT_TYPE LIKE 'image/%' OR $CONTENT_TYPE LIKE 'video/%') AND
|
||||
$CONTENT_TYPE != 'image/svg+xml' AND
|
||||
$MESSAGE_ID != $WALLPAPER_MESSAGE_ID
|
||||
@@ -1122,11 +1124,15 @@ class AttachmentTable(
|
||||
$TABLE_NAME.$OFFLOAD_RESTORED_AT < ${now - 7.days.inWholeMilliseconds} AND
|
||||
$TABLE_NAME.$TRANSFER_STATE = $TRANSFER_PROGRESS_DONE AND
|
||||
$TABLE_NAME.$ARCHIVE_TRANSFER_STATE = ${ArchiveTransferState.FINISHED.value} AND
|
||||
$TABLE_NAME.$DATA_FILE IS NOT NULL AND
|
||||
$TABLE_NAME.$STICKER_ID = -1 AND
|
||||
$TABLE_NAME.$REMOTE_KEY IS NOT NULL AND
|
||||
$TABLE_NAME.$DATA_HASH_END IS NOT NULL AND
|
||||
(
|
||||
$TABLE_NAME.$THUMBNAIL_FILE IS NOT NULL OR
|
||||
NOT ($TABLE_NAME.$CONTENT_TYPE like 'image/%' OR $TABLE_NAME.$CONTENT_TYPE like 'video/%')
|
||||
) AND
|
||||
$TABLE_NAME.$DATA_FILE IS NOT NULL
|
||||
NOT ($TABLE_NAME.$CONTENT_TYPE LIKE 'image/%' OR $TABLE_NAME.$CONTENT_TYPE LIKE 'video/%') OR
|
||||
$TABLE_NAME.$CONTENT_TYPE = 'image/svg+xml'
|
||||
)
|
||||
)
|
||||
AND
|
||||
(
|
||||
@@ -1134,7 +1140,7 @@ class AttachmentTable(
|
||||
)
|
||||
"""
|
||||
|
||||
writableDatabase
|
||||
val count = writableDatabase
|
||||
.update(TABLE_NAME)
|
||||
.values(
|
||||
TRANSFER_STATE to TRANSFER_RESTORE_OFFLOADED,
|
||||
@@ -1142,11 +1148,12 @@ class AttachmentTable(
|
||||
DATA_RANDOM to null,
|
||||
TRANSFORM_PROPERTIES to null,
|
||||
DATA_HASH_START to null,
|
||||
DATA_HASH_END to null,
|
||||
OFFLOAD_RESTORED_AT to 0
|
||||
)
|
||||
.where("$ID in ($subSelect)")
|
||||
.run()
|
||||
|
||||
Log.i(TAG, "Marked $count attachments as optimized")
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -54,7 +54,8 @@ class OptimizeMediaJob private constructor(parameters: Parameters) : Job(paramet
|
||||
SignalDatabase.attachments.markEligibleAttachmentsAsOptimized()
|
||||
|
||||
Log.i(TAG, "Deleting abandoned attachment files")
|
||||
SignalDatabase.attachments.deleteAbandonedAttachmentFiles()
|
||||
val count = SignalDatabase.attachments.deleteAbandonedAttachmentFiles()
|
||||
Log.i(TAG, "Deleted $count attachments")
|
||||
|
||||
return Result.success()
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ class RestoreAttachmentJob private constructor(
|
||||
messageId = attachment.mmsId,
|
||||
attachmentId = attachment.attachmentId,
|
||||
manual = true,
|
||||
queue = Queues.MANUAL_RESTORE.random(),
|
||||
queue = Queues.random(Queues.MANUAL_RESTORE, attachment.dataHash?.hashCode() ?: attachment.remoteKey?.hashCode()),
|
||||
priority = Parameters.PRIORITY_DEFAULT
|
||||
)
|
||||
|
||||
@@ -410,7 +410,7 @@ class RestoreAttachmentJob private constructor(
|
||||
inputStream = input,
|
||||
offloadRestoredAt = if (manual) System.currentTimeMillis().milliseconds else null,
|
||||
archiveRestore = true,
|
||||
notify = false
|
||||
notify = manual
|
||||
)
|
||||
ArchiveDatabaseExecutor.throttledNotifyAttachmentAndChatListObservers()
|
||||
}
|
||||
|
||||
@@ -251,12 +251,13 @@ public abstract class Slide {
|
||||
this.hasImage() == that.hasImage() &&
|
||||
this.hasVideo() == that.hasVideo() &&
|
||||
this.getTransferState() == that.getTransferState() &&
|
||||
Util.equals(this.getUri(), that.getUri());
|
||||
Util.equals(this.getUri(), that.getUri()) &&
|
||||
Util.equals(this.getThumbnailUri(), that.getThumbnailUri());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Util.hashCode(getContentType(), hasAudio(), hasImage(),
|
||||
hasVideo(), getUri(), getTransferState());
|
||||
hasVideo(), getUri(), getTransferState(), getThumbnailUri());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user