Better handle deduped attachment download in media gallery
This commit is contained in:
parent
e7d209ee66
commit
2ea672abb3
@ -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,
|
||||
)
|
||||
}
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
@ -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,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user