diff --git a/SignalServiceKit/src/Loki/Messaging/LKAddressMessage.m b/SignalServiceKit/src/Loki/Messaging/LKAddressMessage.m index cedfb5605..512ccb062 100644 --- a/SignalServiceKit/src/Loki/Messaging/LKAddressMessage.m +++ b/SignalServiceKit/src/Loki/Messaging/LKAddressMessage.m @@ -24,8 +24,8 @@ return self; } -- (SSKProtoContentBuilder *)contentBuilder:(SignalRecipient *)recipient { - SSKProtoContentBuilder *contentBuilder = [super contentBuilder:recipient]; +- (SSKProtoContentBuilder *)prepareCustomContentBuilder:(SignalRecipient *)recipient { + SSKProtoContentBuilder *contentBuilder = SSKProtoContent.builder; SSKProtoLokiAddressMessageBuilder *addressBuilder = [SSKProtoLokiAddressMessage builder]; [addressBuilder setPtpAddress:self.address]; @@ -35,7 +35,7 @@ NSError *error; SSKProtoLokiAddressMessage *addressMessage = [addressBuilder buildAndReturnError:&error]; if (error || !addressMessage) { - OWSFailDebug(@"Failed to build LokiAddressMessage for %@: %@.", recipient.recipientId, error); + OWSFailDebug(@"Failed to build Loki address message for: %@ due to error: %@.", recipient.recipientId, error); } else { [contentBuilder setLokiAddressMessage:addressMessage]; } diff --git a/SignalServiceKit/src/Loki/Messaging/LKDeviceLinkMessage.m b/SignalServiceKit/src/Loki/Messaging/LKDeviceLinkMessage.m index 252c4bb6c..6b72f94ae 100644 --- a/SignalServiceKit/src/Loki/Messaging/LKDeviceLinkMessage.m +++ b/SignalServiceKit/src/Loki/Messaging/LKDeviceLinkMessage.m @@ -31,27 +31,23 @@ } #pragma mark Building -- (SSKProtoContentBuilder *)contentBuilder:(SignalRecipient *)recipient -{ - SSKProtoContentBuilder *contentBuilder = [super contentBuilder:recipient]; - - // If it's a linking request then we should send a prekey bundle - if (self.masterSignature == nil) { +- (SSKProtoContentBuilder *)prepareCustomContentBuilder:(SignalRecipient *)recipient { + SSKProtoContentBuilder *contentBuilder = SSKProtoContent.builder; + // If this is a request then we should attach a pre key bundle + if (self.kind == LKDeviceLinkMessageKindRequest) { PreKeyBundle *bundle = [OWSPrimaryStorage.sharedManager generatePreKeyBundleForContact:recipient.recipientId]; SSKProtoPrekeyBundleMessageBuilder *preKeyBuilder = [SSKProtoPrekeyBundleMessage builderFromPreKeyBundle:bundle]; - - // Build the prekey bundle message + // Build the pre key bundle message NSError *error; - SSKProtoPrekeyBundleMessage *_Nullable message = [preKeyBuilder buildAndReturnError:&error]; + SSKProtoPrekeyBundleMessage *message = [preKeyBuilder buildAndReturnError:&error]; if (error || !message) { - OWSFailDebug(@"Failed to build pre key bundle for %@: %@", recipient.recipientId, error); + OWSFailDebug(@"Failed to build pre key bundle for: %@ due to error: %@.", recipient.recipientId, error); return nil; } else { [contentBuilder setPrekeyBundleMessage:message]; } } - - // Device link message + // Build the device link message NSError *error; SSKProtoLokiDeviceLinkMessageBuilder *deviceLinkMessageBuilder = [SSKProtoLokiDeviceLinkMessage builder]; [deviceLinkMessageBuilder setMasterHexEncodedPublicKey:self.masterHexEncodedPublicKey]; @@ -60,12 +56,12 @@ [deviceLinkMessageBuilder setSlaveSignature:self.slaveSignature]; SSKProtoLokiDeviceLinkMessage *deviceLinkMessage = [deviceLinkMessageBuilder buildAndReturnError:&error]; if (error || deviceLinkMessage == nil) { - OWSFailDebug(@"Failed to build device link message due to error: %@.", error); + OWSFailDebug(@"Failed to build device link message for: %@ due to error: %@.", recipient.recipientId, error); return nil; } else { [contentBuilder setLokiDeviceLinkMessage:deviceLinkMessage]; } - + // Return return contentBuilder; } diff --git a/SignalServiceKit/src/Loki/Messaging/LKFriendRequestMessage.m b/SignalServiceKit/src/Loki/Messaging/LKFriendRequestMessage.m index eccd41ce8..d215ec5da 100644 --- a/SignalServiceKit/src/Loki/Messaging/LKFriendRequestMessage.m +++ b/SignalServiceKit/src/Loki/Messaging/LKFriendRequestMessage.m @@ -6,17 +6,17 @@ @implementation LKFriendRequestMessage -- (SSKProtoContentBuilder *)contentBuilder:(SignalRecipient *)recipient { - SSKProtoContentBuilder *contentBuilder = [super contentBuilder:recipient]; +- (SSKProtoContentBuilder *)prepareCustomContentBuilder:(SignalRecipient *)recipient { + SSKProtoContentBuilder *contentBuilder = SSKProtoContent.builder; PreKeyBundle *bundle = [OWSPrimaryStorage.sharedManager generatePreKeyBundleForContact:recipient.recipientId]; SSKProtoPrekeyBundleMessageBuilder *preKeyBuilder = [SSKProtoPrekeyBundleMessage builderFromPreKeyBundle:bundle]; - // Build the prekey bundle message + // Build the pre key bundle message NSError *error; SSKProtoPrekeyBundleMessage *_Nullable message = [preKeyBuilder buildAndReturnError:&error]; if (error || !message) { - OWSFailDebug(@"Failed to build pre key bundle for %@: %@", recipient.recipientId, error); + OWSFailDebug(@"Failed to build pre key bundle for: %@ due to error: %@.", recipient.recipientId, error); } else { [contentBuilder setPrekeyBundleMessage:message]; } diff --git a/SignalServiceKit/src/Messages/Interactions/OWSEndSessionMessage.m b/SignalServiceKit/src/Messages/Interactions/OWSEndSessionMessage.m index d59b584dd..6f2a53e94 100644 --- a/SignalServiceKit/src/Messages/Interactions/OWSEndSessionMessage.m +++ b/SignalServiceKit/src/Messages/Interactions/OWSEndSessionMessage.m @@ -48,17 +48,17 @@ NS_ASSUME_NONNULL_BEGIN return builder; } -- (SSKProtoContentBuilder *)contentBuilder:(SignalRecipient *)recipient { - SSKProtoContentBuilder *builder = [super contentBuilder:recipient]; +- (SSKProtoContentBuilder *)prepareCustomContentBuilder:(SignalRecipient *)recipient { + SSKProtoContentBuilder *builder = SSKProtoContent.builder; PreKeyBundle *bundle = [OWSPrimaryStorage.sharedManager generatePreKeyBundleForContact:recipient.recipientId]; SSKProtoPrekeyBundleMessageBuilder *preKeyBuilder = [SSKProtoPrekeyBundleMessage builderFromPreKeyBundle:bundle]; - // Build the prekey bundle message + // Build the pre key bundle message NSError *error; SSKProtoPrekeyBundleMessage *_Nullable message = [preKeyBuilder buildAndReturnError:&error]; if (error || !message) { - OWSFailDebug(@"Failed to build preKeyBundle for %@: %@", recipient.recipientId, error); + OWSFailDebug(@"Failed to build pre key bundle for: %@ due to error: %@.", recipient.recipientId, error); } else { [builder setPrekeyBundleMessage:message]; } diff --git a/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h b/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h index 72287ad19..d562512c5 100644 --- a/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h +++ b/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h @@ -162,10 +162,9 @@ typedef NS_ENUM(NSInteger, TSGroupMetaMessage) { - (nullable SSKProtoDataMessage *)buildDataMessage:(NSString *_Nullable)recipientId; /** - * Intermediate protobuf representation - * Subclasses can augment if they want to manipulate the content message before building. + * Allows subclasses to supply a custom content builder that has already prepared part of the message. */ -- (SSKProtoContentBuilder *)contentBuilder:(SignalRecipient *)recipient; +- (SSKProtoContentBuilder *)prepareCustomContentBuilder:(SignalRecipient *)recipient; /** * Should this message be synced to the users other registered devices? This is diff --git a/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.m b/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.m index 883d14874..66162fae1 100644 --- a/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.m +++ b/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.m @@ -1122,11 +1122,6 @@ NSString *NSStringForOutgoingMessageRecipientState(OWSOutgoingMessageRecipientSt return dataProto; } -- (SSKProtoContentBuilder *)contentBuilder:(SignalRecipient *)recipient -{ - return SSKProtoContent.builder; -} - - (nullable NSData *)buildPlainTextData:(SignalRecipient *)recipient { NSError *error; @@ -1136,8 +1131,7 @@ NSString *NSStringForOutgoingMessageRecipientState(OWSOutgoingMessageRecipientSt return nil; } - SSKProtoContentBuilder *contentBuilder = [self contentBuilder:recipient]; - if (contentBuilder == nil) { return nil; } + SSKProtoContentBuilder *contentBuilder = [self prepareCustomContentBuilder:recipient] ?: SSKProtoContent.builder; [contentBuilder setDataMessage:dataMessage]; NSData *_Nullable contentData = [contentBuilder buildSerializedDataAndReturnError:&error]; @@ -1145,6 +1139,7 @@ NSString *NSStringForOutgoingMessageRecipientState(OWSOutgoingMessageRecipientSt OWSFailDebug(@"could not serialize protobuf: %@", error); return nil; } + return contentData; }