diff --git a/SignalServiceKit/src/Messages/Attachments/TSAttachmentPointer.m b/SignalServiceKit/src/Messages/Attachments/TSAttachmentPointer.m index 2d9927309..bcf7aef20 100644 --- a/SignalServiceKit/src/Messages/Attachments/TSAttachmentPointer.m +++ b/SignalServiceKit/src/Messages/Attachments/TSAttachmentPointer.m @@ -8,6 +8,7 @@ #import #import #import +#import NS_ASSUME_NONNULL_BEGIN @@ -209,6 +210,22 @@ NS_ASSUME_NONNULL_BEGIN }]; } +- (void)saveWithTransaction:(YapDatabaseReadWriteTransaction *)transaction +{ +#ifdef DEBUG + if (self.uniqueId.length > 0) { + id _Nullable oldObject = [transaction objectForKey:self.uniqueId inCollection:TSAttachment.collection]; + if ([oldObject isKindOfClass:[TSAttachmentStream class]]) { + OWSFailDebug(@"We should never overwrite a TSAttachmentStream with a TSAttachmentPointer."); + } + } else { + OWSFailDebug(@"Missing uniqueId."); + } +#endif + + [super saveWithTransaction:transaction]; +} + @end NS_ASSUME_NONNULL_END diff --git a/SignalServiceKit/src/Messages/Attachments/TSAttachmentStream.m b/SignalServiceKit/src/Messages/Attachments/TSAttachmentStream.m index e3b393dad..41cbf3047 100644 --- a/SignalServiceKit/src/Messages/Attachments/TSAttachmentStream.m +++ b/SignalServiceKit/src/Messages/Attachments/TSAttachmentStream.m @@ -524,10 +524,11 @@ typedef void (^OWSLoadedThumbnailSuccess)(OWSLoadedThumbnail *loadedThumbnail); self.cachedImageHeight = @(imageSize.height); [self.dbReadWriteConnection asyncReadWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { - - NSString *collection = [[self class] collection]; + NSString *collection = [TSAttachmentStream collection]; TSAttachmentStream *latestInstance = [transaction objectForKey:self.uniqueId inCollection:collection]; - if (latestInstance) { + if (![latestInstance isKindOfClass:[TSAttachmentStream class]]) { + OWSFailDebug(@"Attachment has unexpected type: %@", latestInstance.class); + } else if (latestInstance) { latestInstance.cachedImageWidth = @(imageSize.width); latestInstance.cachedImageHeight = @(imageSize.height); [latestInstance saveWithTransaction:transaction];