diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.m b/SignalServiceKit/src/Messages/OWSMessageSender.m index 504dd07b0..31a475c47 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.m +++ b/SignalServiceKit/src/Messages/OWSMessageSender.m @@ -476,10 +476,6 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; success:(void (^)(void))success failure:(RetryableFailureHandler)failure { - if (message.thread && message.thread.isGroupThread) { - [self saveInfoMessageForGroupMessage:message inThread:message.thread]; - } - [self.udManager ensureSenderCertificateObjCWithSuccess:^(SMKSenderCertificate *senderCertificate) { dispatch_async([OWSDispatch sendingQueue], ^{ @@ -648,6 +644,10 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; return; } + if (thread.isGroupThread) { + [self saveInfoMessageForGroupMessage:message inThread:thread]; + } + NSError *error; NSArray *_Nullable recipientIds = [self unsentRecipientsForMessage:message thread:thread error:&error]; if (error || !recipientIds) { @@ -1538,7 +1538,13 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; - (void)saveInfoMessageForGroupMessage:(TSOutgoingMessage *)message inThread:(TSThread *)thread { - if (message.groupMetaMessage == TSGroupMetaMessageQuit) { + OWSAssertDebug(message); + OWSAssertDebug(thread); + + if (message.groupMetaMessage == TSGroupMetaMessageDeliver) { + // TODO: Why is this necessary? + [message save]; + } else if (message.groupMetaMessage == TSGroupMetaMessageQuit) { [[[TSInfoMessage alloc] initWithTimestamp:message.timestamp inThread:thread messageType:TSInfoMessageTypeGroupQuit