diff --git a/Signal/src/Signal-Bridging-Header.h b/Signal/src/Signal-Bridging-Header.h index e4323e894..a34c03dc7 100644 --- a/Signal/src/Signal-Bridging-Header.h +++ b/Signal/src/Signal-Bridging-Header.h @@ -87,7 +87,6 @@ #import #import #import -#import #import #import #import diff --git a/Signal/src/call/CallService.swift b/Signal/src/call/CallService.swift index cadbcc4d7..e5e2ca138 100644 --- a/Signal/src/call/CallService.swift +++ b/Signal/src/call/CallService.swift @@ -78,6 +78,7 @@ public enum CallError: Error { case externalError(underlyingError: Error) case timeout(description: String) case obsoleteCall(description: String) + case protoErro(description: String) } // Should be roughly synced with Android client for consistency @@ -407,9 +408,17 @@ private class SignalCallData: NSObject { } return peerConnectionClient.setLocalSessionDescription(sessionDescription).then { - let offerMessage = OWSCallOfferMessage(callId: call.signalingId, sessionDescription: sessionDescription.sdp) - let callMessage = OWSOutgoingCallMessage(thread: call.thread, offerMessage: offerMessage) - return self.messageSender.sendPromise(message: callMessage) + let offerBuilder = SSKProtoCallMessageOffer.SSKProtoCallMessageOfferBuilder() + offerBuilder.setId(call.signalingId) + offerBuilder.setSessionDescription(sessionDescription.sdp) + do { + let offer = try offerBuilder.build() + let callMessage = OWSOutgoingCallMessage(thread: call.thread, offerMessage: offer) + return self.messageSender.sendPromise(message: callMessage) + } catch { + owsFail("Couldn't build proto in \(#function)") + throw CallError.protoErro(description: "Couldn't build proto in \(#function)") + } } }.then { guard self.call == call else { diff --git a/SignalServiceKit/src/Messages/OWSCallOfferMessage.h b/SignalServiceKit/src/Messages/OWSCallOfferMessage.h deleted file mode 100644 index 3006991ef..000000000 --- a/SignalServiceKit/src/Messages/OWSCallOfferMessage.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. -// - -NS_ASSUME_NONNULL_BEGIN - -@class SSKProtoCallMessageOffer; - -/** - * Sent by the call initiator to Signal their intention to set up a call with the recipient. - */ -@interface OWSCallOfferMessage : NSObject - -- (instancetype)initWithCallId:(UInt64)callId sessionDescription:(NSString *)sessionDescription; - -@property (nonatomic, readonly) UInt64 callId; -@property (nonatomic, readonly, copy) NSString *sessionDescription; - -- (nullable SSKProtoCallMessageOffer *)asProtobuf; - -@end - -NS_ASSUME_NONNULL_END diff --git a/SignalServiceKit/src/Messages/OWSCallOfferMessage.m b/SignalServiceKit/src/Messages/OWSCallOfferMessage.m deleted file mode 100644 index 27e631289..000000000 --- a/SignalServiceKit/src/Messages/OWSCallOfferMessage.m +++ /dev/null @@ -1,43 +0,0 @@ -// -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. -// - -#import "OWSCallOfferMessage.h" -#import - -NS_ASSUME_NONNULL_BEGIN - -@implementation OWSCallOfferMessage - -- (instancetype)initWithCallId:(UInt64)callId sessionDescription:(NSString *)sessionDescription -{ - self = [super init]; - if (!self) { - return self; - } - - _callId = callId; - _sessionDescription = sessionDescription; - - return self; -} - -- (nullable SSKProtoCallMessageOffer *)asProtobuf -{ - SSKProtoCallMessageOfferBuilder *builder = [SSKProtoCallMessageOfferBuilder new]; - - builder.id = self.callId; - builder.sessionDescription = self.sessionDescription; - - NSError *error; - SSKProtoCallMessageOffer *_Nullable result = [builder buildAndReturnError:&error]; - if (error || !result) { - OWSFail(@"%@ could not build protobuf: %@", self.logTag, error); - return nil; - } - return result; -} - -@end - -NS_ASSUME_NONNULL_END diff --git a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h index 314460b4e..c9580d4ad 100644 --- a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h +++ b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.h @@ -10,7 +10,7 @@ NS_ASSUME_NONNULL_BEGIN @class OWSCallBusyMessage; @class OWSCallHangupMessage; @class OWSCallIceUpdateMessage; -@class OWSCallOfferMessage; +@class SSKProtoCallMessageOffer; @class TSThread; /** @@ -29,7 +29,7 @@ NS_ASSUME_NONNULL_BEGIN quotedMessage:(nullable TSQuotedMessage *)quotedMessage contactShare:(nullable OWSContact *)contactShare NS_UNAVAILABLE; -- (instancetype)initWithThread:(TSThread *)thread offerMessage:(OWSCallOfferMessage *)offerMessage; +- (instancetype)initWithThread:(TSThread *)thread offerMessage:(SSKProtoCallMessageOffer *)offerMessage; - (instancetype)initWithThread:(TSThread *)thread answerMessage:(OWSCallAnswerMessage *)answerMessage; - (instancetype)initWithThread:(TSThread *)thread iceUpdateMessage:(OWSCallIceUpdateMessage *)iceUpdateMessage; - (instancetype)initWithThread:(TSThread *)thread @@ -37,11 +37,11 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithThread:(TSThread *)thread hangupMessage:(OWSCallHangupMessage *)hangupMessage; - (instancetype)initWithThread:(TSThread *)thread busyMessage:(OWSCallBusyMessage *)busyMessage; -@property (nullable, nonatomic, readonly, strong) OWSCallOfferMessage *offerMessage; -@property (nullable, nonatomic, readonly, strong) OWSCallAnswerMessage *answerMessage; -@property (nullable, nonatomic, readonly, strong) NSArray *iceUpdateMessages; -@property (nullable, nonatomic, readonly, strong) OWSCallHangupMessage *hangupMessage; -@property (nullable, nonatomic, readonly, strong) OWSCallBusyMessage *busyMessage; +@property (nullable, nonatomic, readonly) SSKProtoCallMessageOffer *offerMessage; +@property (nullable, nonatomic, readonly) OWSCallAnswerMessage *answerMessage; +@property (nullable, nonatomic, readonly) NSArray *iceUpdateMessages; +@property (nullable, nonatomic, readonly) OWSCallHangupMessage *hangupMessage; +@property (nullable, nonatomic, readonly) OWSCallBusyMessage *busyMessage; @end diff --git a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m index dfba56952..83f5fe605 100644 --- a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m +++ b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m @@ -8,7 +8,6 @@ #import "OWSCallBusyMessage.h" #import "OWSCallHangupMessage.h" #import "OWSCallIceUpdateMessage.h" -#import "OWSCallOfferMessage.h" #import "ProtoUtils.h" #import "SignalRecipient.h" #import "TSContactThread.h" @@ -39,7 +38,7 @@ NS_ASSUME_NONNULL_BEGIN return self; } -- (instancetype)initWithThread:(TSThread *)thread offerMessage:(OWSCallOfferMessage *)offerMessage +- (instancetype)initWithThread:(TSThread *)thread offerMessage:(SSKProtoCallMessageOffer *)offerMessage { self = [self initWithThread:thread]; if (!self) { @@ -147,11 +146,7 @@ NS_ASSUME_NONNULL_BEGIN SSKProtoCallMessageBuilder *builder = [SSKProtoCallMessageBuilder new]; if (self.offerMessage) { - SSKProtoCallMessageOffer *_Nullable proto = [self.offerMessage asProtobuf]; - if (!proto) { - return nil; - } - [builder setOffer:proto]; + [builder setOffer:self.offerMessage]; } if (self.answerMessage) {