diff --git a/Signal/src/ViewControllers/MediaGallery/MediaGallery.swift b/Signal/src/ViewControllers/MediaGallery/MediaGallery.swift index 4ccbec9d53..d74deb7eb9 100644 --- a/Signal/src/ViewControllers/MediaGallery/MediaGallery.swift +++ b/Signal/src/ViewControllers/MediaGallery/MediaGallery.swift @@ -488,8 +488,8 @@ class MediaGallery { func reloadGalleryItem(item: MediaGalleryItem) -> MediaGalleryItem? { let reloadedReferencedAttachment = DependenciesBridge.shared.db.read { - DependenciesBridge.shared.attachmentStore.fetchAnyReferencedAttachment( - for: item.referencedAttachment.reference.owner.id, + DependenciesBridge.shared.attachmentStore.fetchUpdatedReferencedAttachment( + for: item.referencedAttachment, tx: $0, ) } diff --git a/Signal/src/ViewControllers/MediaGallery/MediaPageViewController.swift b/Signal/src/ViewControllers/MediaGallery/MediaPageViewController.swift index aa1be5a332..ee6ecfde99 100644 --- a/Signal/src/ViewControllers/MediaGallery/MediaPageViewController.swift +++ b/Signal/src/ViewControllers/MediaGallery/MediaPageViewController.swift @@ -883,7 +883,7 @@ extension MediaPageViewController: MediaItemViewControllerDelegate { func mediaItemViewControllerDidUpdateGalleryItem(_ viewController: MediaItemViewController, item: MediaGalleryItem) { if let newItem = mediaGallery.reloadGalleryItem(item: item), - newItem.referencedAttachment.attachment.id == currentItem.referencedAttachment.attachment.id + newItem.referencedAttachment.reference.referenceId == currentItem.referencedAttachment.reference.referenceId { replaceCurrentItem(item: newItem) } diff --git a/SignalServiceKit/Messages/Attachments/V2/AttachmentStore/AttachmentStore.swift b/SignalServiceKit/Messages/Attachments/V2/AttachmentStore/AttachmentStore.swift index 4004f0e67f..dba2619726 100644 --- a/SignalServiceKit/Messages/Attachments/V2/AttachmentStore/AttachmentStore.swift +++ b/SignalServiceKit/Messages/Attachments/V2/AttachmentStore/AttachmentStore.swift @@ -243,6 +243,28 @@ public struct AttachmentStore { return fetchReferencedAttachments(references: references, tx: tx) } + public func fetchUpdatedReferencedAttachment( + for referencedAttachment: ReferencedAttachment, + tx: DBReadTransaction, + ) -> ReferencedAttachment? { + let references = fetchReferencedAttachments( + for: referencedAttachment.reference.owner.id, + tx: tx, + ) + var refreshedReference: ReferencedAttachment? + for reference in references { + if reference.reference.referenceId == referencedAttachment.reference.referenceId { + refreshedReference = reference + break + } + } + guard let refreshedReference else { + owsFailDebug("Missing attachment reference!") + return nil + } + return refreshedReference + } + public func fetchReferencedAttachmentsOwnedByMessage( messageRowId: Int64, tx: DBReadTransaction,