diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.h b/SignalServiceKit/src/Messages/OWSMessageSender.h index 76d6ac5bf..61f9df926 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.h +++ b/SignalServiceKit/src/Messages/OWSMessageSender.h @@ -76,10 +76,16 @@ NS_SWIFT_NAME(MessageSender) - (void)sendAttachment:(DataSource *)dataSource contentType:(NSString *)contentType sourceFilename:(nullable NSString *)sourceFilename + albumMessageId:(nullable NSString *)albumMessageId inMessage:(TSOutgoingMessage *)outgoingMessage success:(void (^)(void))successHandler failure:(void (^)(NSError *error))failureHandler; +- (void)sendAttachments:(NSArray *)attachmentInfos + inMessage:(TSOutgoingMessage *)message + success:(void (^)(void))successHandler + failure:(void (^)(NSError *error))failureHandler; + /** * Same as `sendAttachment:`, but deletes the local copy of the attachment after sending. * Used for sending sync request data, not for user visible attachments. diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.m b/SignalServiceKit/src/Messages/OWSMessageSender.m index 36fc8e8ed..6e8661a7a 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.m +++ b/SignalServiceKit/src/Messages/OWSMessageSender.m @@ -444,6 +444,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; [self sendAttachment:dataSource contentType:contentType sourceFilename:nil + albumMessageId:nil inMessage:message success:successWithDeleteHandler failure:failureWithDeleteHandler]; @@ -452,26 +453,41 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; - (void)sendAttachment:(DataSource *)dataSource contentType:(NSString *)contentType sourceFilename:(nullable NSString *)sourceFilename + albumMessageId:(nullable NSString *)albumMessageId inMessage:(TSOutgoingMessage *)message - success:(void (^)(void))successHandler - failure:(void (^)(NSError *error))failureHandler + success:(void (^)(void))success + failure:(void (^)(NSError *error))failure { OWSAssertDebug(dataSource); - NSString *albumMessageId = message.uniqueId; OWSOutgoingAttachmentInfo *attachmentInfo = [[OWSOutgoingAttachmentInfo alloc] initWithDataSource:dataSource contentType:contentType sourceFilename:sourceFilename caption:nil albumMessageId:albumMessageId]; - [OutgoingMessagePreparer prepareAttachments:@[ attachmentInfo ] + [self sendAttachments:@[ + attachmentInfo, + ] + inMessage:message + success:success + failure:failure]; +} + +- (void)sendAttachments:(NSArray *)attachmentInfos + inMessage:(TSOutgoingMessage *)message + success:(void (^)(void))success + failure:(void (^)(NSError *error))failure +{ + OWSAssertDebug(attachmentInfos.count > 0); + + [OutgoingMessagePreparer prepareAttachments:attachmentInfos inMessage:message completionHandler:^(NSError *_Nullable error) { if (error) { - failureHandler(error); + failure(error); return; } - [self sendMessage:message success:successHandler failure:failureHandler]; + [self sendMessage:message success:success failure:failure]; }]; }