diff --git a/src/Messages/TSMessagesManager+attachments.h b/src/Messages/TSMessagesManager+attachments.h index 7e36ad86f..f500fbf97 100644 --- a/src/Messages/TSMessagesManager+attachments.h +++ b/src/Messages/TSMessagesManager+attachments.h @@ -24,6 +24,17 @@ success:(successSendingCompletionBlock)successCompletionBlock failure:(failedSendingCompletionBlock)failedCompletionBlock; +/** + * Delete the local copy of the attachment after sending. Used for sending sync request data, not for user visible + * attachments. + */ +- (void)sendTemporaryAttachment:(NSData *)attachmentData + contentType:(NSString *)contentType + inMessage:(TSOutgoingMessage *)outgoingMessage + thread:(TSThread *)thread + success:(successSendingCompletionBlock)successCompletionBlock + failure:(failedSendingCompletionBlock)failedCompletionBlock; + - (void)retrieveAttachment:(TSAttachmentPointer *)attachment messageId:(NSString *)messageId; @end diff --git a/src/Messages/TSMessagesManager+attachments.m b/src/Messages/TSMessagesManager+attachments.m index 7ef0871fc..6b4259c32 100644 --- a/src/Messages/TSMessagesManager+attachments.m +++ b/src/Messages/TSMessagesManager+attachments.m @@ -68,6 +68,37 @@ dispatch_queue_t attachmentsQueue() { } } +- (void)sendTemporaryAttachment:(NSData *)attachmentData + contentType:(NSString *)contentType + inMessage:(TSOutgoingMessage *)outgoingMessage + thread:(TSThread *)thread + success:(successSendingCompletionBlock)successCompletionBlock + failure:(failedSendingCompletionBlock)failedCompletionBlock +{ + void (^successBlockWithDelete)() = ^{ + if (successCompletionBlock) { + successCompletionBlock(); + } + DDLogDebug(@"Removing temporary attachment message."); + [outgoingMessage remove]; + }; + + void (^failureBlockWithDelete)() = ^{ + if (failedCompletionBlock) { + failedCompletionBlock(); + } + DDLogDebug(@"Removing temporary attachment message."); + [outgoingMessage remove]; + }; + + [self sendAttachment:attachmentData + contentType:contentType + inMessage:outgoingMessage + thread:thread + success:successBlockWithDelete + failure:failureBlockWithDelete]; +} + - (void)sendAttachment:(NSData *)attachmentData contentType:(NSString *)contentType inMessage:(TSOutgoingMessage *)outgoingMessage diff --git a/src/Messages/TSMessagesManager.m b/src/Messages/TSMessagesManager.m index 5dac400d0..a78c6c6d6 100644 --- a/src/Messages/TSMessagesManager.m +++ b/src/Messages/TSMessagesManager.m @@ -243,7 +243,7 @@ OWSSyncContactsMessage *syncContactsMessage = [[OWSSyncContactsMessage alloc] initWithContactsManager:[TextSecureKitEnv sharedEnv].contactsManager]; - [self sendAttachment:[syncContactsMessage buildPlainTextAttachmentData] + [self sendTemporaryAttachment:[syncContactsMessage buildPlainTextAttachmentData] contentType:OWSMimeTypeApplicationOctetStream inMessage:syncContactsMessage thread:nil @@ -259,7 +259,7 @@ OWSSyncGroupsMessage *syncGroupsMessage = [[OWSSyncGroupsMessage alloc] init]; - [self sendAttachment:[syncGroupsMessage buildPlainTextAttachmentData] + [self sendTemporaryAttachment:[syncGroupsMessage buildPlainTextAttachmentData] contentType:OWSMimeTypeApplicationOctetStream inMessage:syncGroupsMessage thread:nil