From ed2945126a1b1a000bb074c86b2fe2a5944edc42 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Thu, 10 May 2018 10:14:39 -0400 Subject: [PATCH] Remove contact share avatars upon message deletion // FREEBIE --- SignalServiceKit/src/Messages/Interactions/OWSContact.h | 2 ++ SignalServiceKit/src/Messages/Interactions/OWSContact.m | 7 +++++++ SignalServiceKit/src/Messages/Interactions/TSMessage.m | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/SignalServiceKit/src/Messages/Interactions/OWSContact.h b/SignalServiceKit/src/Messages/Interactions/OWSContact.h index 8afad46cd..13937b23b 100644 --- a/SignalServiceKit/src/Messages/Interactions/OWSContact.h +++ b/SignalServiceKit/src/Messages/Interactions/OWSContact.h @@ -117,6 +117,8 @@ NSString *NSStringForContactAddressType(OWSContactAddressType value); @property (nonatomic, readonly, nullable) NSString *avatarAttachmentId; - (nullable TSAttachment *)avatarAttachmentWithTransaction:(YapDatabaseReadTransaction *)transaction; +- (void)removeAvatarAttachmentWithTransaction:(YapDatabaseReadWriteTransaction *)transaction; + - (void)saveAvatarImage:(UIImage *)image transaction:(YapDatabaseReadWriteTransaction *)transaction; // "Profile" avatars should _not_ be saved to device contacts. @property (nonatomic, readonly) BOOL isProfileAvatar; diff --git a/SignalServiceKit/src/Messages/Interactions/OWSContact.m b/SignalServiceKit/src/Messages/Interactions/OWSContact.m index 975db2145..b4fa3815e 100644 --- a/SignalServiceKit/src/Messages/Interactions/OWSContact.m +++ b/SignalServiceKit/src/Messages/Interactions/OWSContact.m @@ -499,6 +499,13 @@ NSString *NSStringForContactAddressType(OWSContactAddressType value) self.avatarAttachmentId = attachmentStream.uniqueId; } +- (void)removeAvatarAttachmentWithTransaction:(YapDatabaseReadWriteTransaction *)transaction +{ + TSAttachmentStream *_Nullable attachment = + [TSAttachmentStream fetchObjectWithUniqueID:self.avatarAttachmentId transaction:transaction]; + [attachment removeWithTransaction:transaction]; +} + #pragma mark - Phone Numbers and Recipient IDs - (NSArray *)systemContactsWithSignalAccountPhoneNumbers:(id)contactsManager diff --git a/SignalServiceKit/src/Messages/Interactions/TSMessage.m b/SignalServiceKit/src/Messages/Interactions/TSMessage.m index 68572ada4..4368822fc 100644 --- a/SignalServiceKit/src/Messages/Interactions/TSMessage.m +++ b/SignalServiceKit/src/Messages/Interactions/TSMessage.m @@ -289,6 +289,10 @@ static const NSUInteger OWSMessageSchemaVersion = 4; [attachment removeWithTransaction:transaction]; }; + if (self.contactShare.avatarAttachmentId) { + [self.contactShare removeAvatarAttachmentWithTransaction:transaction]; + } + // Updates inbox thread preview [self touchThreadWithTransaction:transaction]; }