OrphanDataCleaner vs. QuotedAttachment thumbnails

// FREEBIE
pull/1/head
Michael Kirk 8 years ago
parent 4399967e99
commit 622f6bdf21

@ -98,6 +98,9 @@ NS_ASSUME_NONNULL_BEGIN
- (nullable NSString *)thumbnailAttachmentStreamId; - (nullable NSString *)thumbnailAttachmentStreamId;
- (void)setThumbnailAttachmentStream:(TSAttachment *)thumbnailAttachmentStream; - (void)setThumbnailAttachmentStream:(TSAttachment *)thumbnailAttachmentStream;
// currently only used by orphan attachment cleaner
- (NSArray<NSString *> *)thumbnailAttachmentStreamIds;
@property (atomic, readonly) NSArray<OWSAttachmentInfo *> *quotedAttachments; @property (atomic, readonly) NSArray<OWSAttachmentInfo *> *quotedAttachments;
// Before sending, persist a thumbnail attachment derived from the quoted attachment // Before sending, persist a thumbnail attachment derived from the quoted attachment

@ -200,18 +200,18 @@ NS_ASSUME_NONNULL_BEGIN
return firstAttachment.sourceFilename; return firstAttachment.sourceFilename;
} }
- (nullable NSString *)thumbnailAttachmentStreamId - (nullable NSString *)thumbnailAttachmentPointerId
{ {
OWSAttachmentInfo *firstAttachment = self.firstAttachmentInfo; OWSAttachmentInfo *firstAttachment = self.firstAttachmentInfo;
return firstAttachment.thumbnailAttachmentStreamId; return firstAttachment.thumbnailAttachmentPointerId;
} }
- (nullable NSString *)thumbnailAttachmentPointerId - (nullable NSString *)thumbnailAttachmentStreamId
{ {
OWSAttachmentInfo *firstAttachment = self.firstAttachmentInfo; OWSAttachmentInfo *firstAttachment = self.firstAttachmentInfo;
return firstAttachment.thumbnailAttachmentPointerId; return firstAttachment.thumbnailAttachmentStreamId;
} }
- (void)setThumbnailAttachmentStream:(TSAttachmentStream *)attachmentStream - (void)setThumbnailAttachmentStream:(TSAttachmentStream *)attachmentStream
@ -223,6 +223,18 @@ NS_ASSUME_NONNULL_BEGIN
firstAttachment.thumbnailAttachmentStreamId = attachmentStream.uniqueId; firstAttachment.thumbnailAttachmentStreamId = attachmentStream.uniqueId;
} }
- (NSArray<NSString *> *)thumbnailAttachmentStreamIds
{
NSMutableArray *streamIds = [NSMutableArray new];
for (OWSAttachmentInfo *info in self.quotedAttachments) {
if (info.thumbnailAttachmentStreamId) {
[streamIds addObject:info.thumbnailAttachmentStreamId];
}
}
return [streamIds copy];
}
- (NSArray<TSAttachmentStream *> *)createThumbnailAttachmentsIfNecessaryWithTransaction: - (NSArray<TSAttachmentStream *> *)createThumbnailAttachmentsIfNecessaryWithTransaction:
(YapDatabaseReadWriteTransaction *)transaction (YapDatabaseReadWriteTransaction *)transaction
{ {

@ -8,6 +8,7 @@
#import "TSAttachmentStream.h" #import "TSAttachmentStream.h"
#import "TSInteraction.h" #import "TSInteraction.h"
#import "TSMessage.h" #import "TSMessage.h"
#import "TSQuotedMessage.h"
#import "TSThread.h" #import "TSThread.h"
#import <YapDatabase/YapDatabase.h> #import <YapDatabase/YapDatabase.h>
@ -104,6 +105,8 @@ NS_ASSUME_NONNULL_BEGIN
NSMutableSet<NSString *> *orphanInteractionIds = [NSMutableSet new]; NSMutableSet<NSString *> *orphanInteractionIds = [NSMutableSet new];
NSMutableSet<NSString *> *messageAttachmentIds = [NSMutableSet new]; NSMutableSet<NSString *> *messageAttachmentIds = [NSMutableSet new];
NSMutableSet<NSString *> *quotedReplyThumbnailAttachmentIds = [NSMutableSet new];
[databaseConnection readWithBlock:^(YapDatabaseReadTransaction *_Nonnull transaction) { [databaseConnection readWithBlock:^(YapDatabaseReadTransaction *_Nonnull transaction) {
[transaction enumerateKeysAndObjectsInCollection:TSMessage.collection [transaction enumerateKeysAndObjectsInCollection:TSMessage.collection
usingBlock:^(NSString *key, TSInteraction *interaction, BOOL *stop) { usingBlock:^(NSString *key, TSInteraction *interaction, BOOL *stop) {
@ -114,18 +117,28 @@ NS_ASSUME_NONNULL_BEGIN
if (![interaction isKindOfClass:[TSMessage class]]) { if (![interaction isKindOfClass:[TSMessage class]]) {
return; return;
} }
TSMessage *message = (TSMessage *)interaction; TSMessage *message = (TSMessage *)interaction;
if (message.attachmentIds.count > 0) { if (message.attachmentIds.count > 0) {
[messageAttachmentIds addObjectsFromArray:message.attachmentIds]; [messageAttachmentIds addObjectsFromArray:message.attachmentIds];
} }
TSQuotedMessage *_Nullable quotedMessage = message.quotedMessage;
if (quotedMessage) {
[quotedReplyThumbnailAttachmentIds
addObjectsFromArray:quotedMessage
.thumbnailAttachmentStreamIds];
}
}]; }];
}]; }];
CleanupLogDebug(@"%@ attachmentIds: %zd", self.logTag, attachmentIds.count); CleanupLogDebug(@"%@ attachmentIds: %zd", self.logTag, attachmentIds.count);
CleanupLogDebug(@"%@ messageAttachmentIds: %zd", self.logTag, messageAttachmentIds.count); CleanupLogDebug(@"%@ messageAttachmentIds: %zd", self.logTag, messageAttachmentIds.count);
CleanupLogDebug(@"%@ quotedReplyThumbnailAttachmentIds: %zd", self.logTag, quotedReplyThumbnailAttachmentIds.count);
NSMutableSet<NSString *> *orphanAttachmentIds = [attachmentIds mutableCopy]; NSMutableSet<NSString *> *orphanAttachmentIds = [attachmentIds mutableCopy];
[orphanAttachmentIds minusSet:messageAttachmentIds]; [orphanAttachmentIds minusSet:messageAttachmentIds];
[orphanAttachmentIds minusSet:quotedReplyThumbnailAttachmentIds];
NSMutableSet<NSString *> *missingAttachmentIds = [messageAttachmentIds mutableCopy]; NSMutableSet<NSString *> *missingAttachmentIds = [messageAttachmentIds mutableCopy];
[missingAttachmentIds minusSet:attachmentIds]; [missingAttachmentIds minusSet:attachmentIds];

Loading…
Cancel
Save