From 00c5a176f8a341088f8fe52a409bb7c8b075e6f9 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Thu, 26 Sep 2019 09:37:49 +1000 Subject: [PATCH] Fix incorrect override --- .../src/Loki/Messaging/LKDeviceLinkMessage.m | 32 ++++++++++++++++--- .../Messages/Interactions/TSOutgoingMessage.h | 3 ++ 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/SignalServiceKit/src/Loki/Messaging/LKDeviceLinkMessage.m b/SignalServiceKit/src/Loki/Messaging/LKDeviceLinkMessage.m index 6c06de4ae..285ac3f48 100644 --- a/SignalServiceKit/src/Loki/Messaging/LKDeviceLinkMessage.m +++ b/SignalServiceKit/src/Loki/Messaging/LKDeviceLinkMessage.m @@ -7,6 +7,7 @@ @implementation LKDeviceLinkMessage +#pragma mark Convenience - (LKDeviceLinkMessageKind)kind { if (self.masterSignature != nil) { return LKDeviceLinkMessageKindAuthorization; @@ -15,6 +16,7 @@ } } +#pragma mark Initialization - (instancetype)initInThread:(TSThread *)thread masterHexEncodedPublicKey:(NSString *)masterHexEncodedPublicKey slaveHexEncodedPublicKey:(NSString *)slaveHexEncodedPublicKey masterSignature:(NSData *)masterSignature slaveSignature:(NSData *)slaveSignature { self = [self initOutgoingMessageWithTimestamp:NSDate.ows_millisecondTimeStamp inThread:thread messageBody:@"" attachmentIds:[NSMutableArray new] expiresInSeconds:0 expireStartedAt:0 isVoiceMessage:NO groupMetaMessage:TSGroupMetaMessageUnspecified quotedMessage:nil contactShare:nil linkPreview:nil]; @@ -27,22 +29,42 @@ return self; } -- (SSKProtoContentBuilder *)contentBuilder:(SignalRecipient *)recipient { +#pragma mark Building +- (nullable NSData *)buildPlainTextData:(SignalRecipient *)recipient +{ + // Prepare + SSKProtoContentBuilder *contentBuilder = [self contentBuilder:recipient]; + NSError *error; + // Data message + SSKProtoDataMessage *_Nullable dataMessage = [self buildDataMessage:recipient.recipientId]; + if (!dataMessage) { + OWSFailDebug(@"Failed to build data message."); + return nil; + } + [contentBuilder setDataMessage:dataMessage]; + // Device link message SSKProtoLokiDeviceLinkMessageBuilder *deviceLinkMessageBuilder = [SSKProtoLokiDeviceLinkMessage builder]; [deviceLinkMessageBuilder setMasterHexEncodedPublicKey:self.masterHexEncodedPublicKey]; [deviceLinkMessageBuilder setSlaveHexEncodedPublicKey:self.slaveHexEncodedPublicKey]; if (self.masterSignature != nil) { [deviceLinkMessageBuilder setMasterSignature:self.masterSignature]; } [deviceLinkMessageBuilder setSlaveSignature:self.slaveSignature]; - NSError *error; 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 due to error: %@.", error); + return nil; } - SSKProtoContentBuilder *contentBuilder = [super contentBuilder:recipient]; [contentBuilder setLokiDeviceLinkMessage:deviceLinkMessage]; - return contentBuilder; + // Serialize + NSData *_Nullable contentAsData = [contentBuilder buildSerializedDataAndReturnError:&error]; + if (error || !contentAsData) { + OWSFailDebug(@"Failed to build serialized message content due to error: %@.", error); + return nil; + } + // Return + return contentAsData; } +#pragma mark Settings - (BOOL)shouldSyncTranscript { return NO; } - (BOOL)shouldBeSaved { return NO; } diff --git a/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h b/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h index 46f8ad201..c55a67fdd 100644 --- a/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h +++ b/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h @@ -56,6 +56,7 @@ typedef NS_ENUM(NSInteger, TSGroupMetaMessage) { @class SSKProtoAttachmentPointer; @class SSKProtoContentBuilder; +@class SSKProtoDataMessage; @class SSKProtoDataMessageBuilder; @class SignalRecipient; @@ -158,6 +159,8 @@ typedef NS_ENUM(NSInteger, TSGroupMetaMessage) { */ - (nullable SSKProtoDataMessageBuilder *)dataMessageBuilder; +- (nullable SSKProtoDataMessage *)buildDataMessage:(NSString *_Nullable)recipientId; + /** * Intermediate protobuf representation * Subclasses can augment if they want to manipulate the content message before building.