Refactor DeviceLinkMessage.

Send a prekeybundle with a pairing request.
pull/56/head
Mikunj 6 years ago
parent 2dd0634a62
commit 17cede4a14

@ -171,9 +171,9 @@ final class DeviceLinkingModal : Modal, DeviceLinkingSessionDelegate {
} }
@objc override func cancel() { @objc override func cancel() {
let session = DeviceLinkingSession.current! let session = DeviceLinkingSession.current
session.stopListeningForLinkingRequests() session?.stopListeningForLinkingRequests()
session.markLinkingRequestAsProcessed() // Only relevant in master mode session?.markLinkingRequestAsProcessed() // Only relevant in master mode
delegate?.handleDeviceLinkingModalDismissed() // Only relevant in slave mode delegate?.handleDeviceLinkingModalDismissed() // Only relevant in slave mode
if let deviceLink = deviceLink { if let deviceLink = deviceLink {
OWSPrimaryStorage.shared().dbReadWriteConnection.readWrite { transaction in OWSPrimaryStorage.shared().dbReadWriteConnection.readWrite { transaction in

@ -1,5 +1,6 @@
#import "LKDeviceLinkMessage.h" #import "LKDeviceLinkMessage.h"
#import "OWSIdentityManager.h" #import "OWSIdentityManager.h"
#import "OWSPrimaryStorage+Loki.h"
#import "SignalRecipient.h" #import "SignalRecipient.h"
#import <SignalCoreKit/NSData+OWS.h> #import <SignalCoreKit/NSData+OWS.h>
#import <SignalCoreKit/NSDate+OWS.h> #import <SignalCoreKit/NSDate+OWS.h>
@ -30,19 +31,28 @@
} }
#pragma mark Building #pragma mark Building
- (nullable NSData *)buildPlainTextData:(SignalRecipient *)recipient - (SSKProtoContentBuilder *)contentBuilder:(SignalRecipient *)recipient
{ {
// Prepare SSKProtoContentBuilder *contentBuilder = [super contentBuilder:recipient];
SSKProtoContentBuilder *contentBuilder = [self contentBuilder:recipient];
NSError *error; // If it's a linking request then we should send a prekey bundle
// Data message if (self.masterSignature == nil) {
SSKProtoDataMessage *_Nullable dataMessage = [self buildDataMessage:recipient.recipientId]; PreKeyBundle *bundle = [OWSPrimaryStorage.sharedManager generatePreKeyBundleForContact:recipient.recipientId];
if (!dataMessage) { SSKProtoPrekeyBundleMessageBuilder *preKeyBuilder = [SSKProtoPrekeyBundleMessage builderFromPreKeyBundle:bundle];
OWSFailDebug(@"Failed to build data message.");
return nil; // Build the prekey bundle message
NSError *error;
SSKProtoPrekeyBundleMessage *_Nullable message = [preKeyBuilder buildAndReturnError:&error];
if (error || !message) {
OWSFailDebug(@"Failed to build pre key bundle for %@: %@", recipient.recipientId, error);
return nil;
} else {
[contentBuilder setPrekeyBundleMessage:message];
}
} }
[contentBuilder setDataMessage:dataMessage];
// Device link message // Device link message
NSError *error;
SSKProtoLokiDeviceLinkMessageBuilder *deviceLinkMessageBuilder = [SSKProtoLokiDeviceLinkMessage builder]; SSKProtoLokiDeviceLinkMessageBuilder *deviceLinkMessageBuilder = [SSKProtoLokiDeviceLinkMessage builder];
[deviceLinkMessageBuilder setMasterHexEncodedPublicKey:self.masterHexEncodedPublicKey]; [deviceLinkMessageBuilder setMasterHexEncodedPublicKey:self.masterHexEncodedPublicKey];
[deviceLinkMessageBuilder setSlaveHexEncodedPublicKey:self.slaveHexEncodedPublicKey]; [deviceLinkMessageBuilder setSlaveHexEncodedPublicKey:self.slaveHexEncodedPublicKey];
@ -52,16 +62,11 @@
if (error || deviceLinkMessage == nil) { 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; return nil;
} else {
[contentBuilder setLokiDeviceLinkMessage:deviceLinkMessage];
} }
[contentBuilder setLokiDeviceLinkMessage:deviceLinkMessage];
// Serialize return contentBuilder;
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 #pragma mark Settings

@ -1137,6 +1137,8 @@ NSString *NSStringForOutgoingMessageRecipientState(OWSOutgoingMessageRecipientSt
} }
SSKProtoContentBuilder *contentBuilder = [self contentBuilder:recipient]; SSKProtoContentBuilder *contentBuilder = [self contentBuilder:recipient];
if (contentBuilder == nil) { return nil; }
[contentBuilder setDataMessage:dataMessage]; [contentBuilder setDataMessage:dataMessage];
NSData *_Nullable contentData = [contentBuilder buildSerializedDataAndReturnError:&error]; NSData *_Nullable contentData = [contentBuilder buildSerializedDataAndReturnError:&error];
if (error || !contentData) { if (error || !contentData) {

Loading…
Cancel
Save