Merge branch 'charlesmchen/callWrappers'

pull/1/head
Matthew Chen 7 years ago
commit 01268f0160

@ -1 +1 @@
Subproject commit 38d58dc5ecdb591023706e2240cfde92a39c1968
Subproject commit b9d00f47530c6c0c219b6c8cfe1802216f3093b9

@ -82,12 +82,7 @@
#import <SignalServiceKit/OWSAsserts.h>
#import <SignalServiceKit/OWSAttachmentsProcessor.h>
#import <SignalServiceKit/OWSBackgroundTask.h>
#import <SignalServiceKit/OWSCallAnswerMessage.h>
#import <SignalServiceKit/OWSCallBusyMessage.h>
#import <SignalServiceKit/OWSCallHangupMessage.h>
#import <SignalServiceKit/OWSCallIceUpdateMessage.h>
#import <SignalServiceKit/OWSCallMessageHandler.h>
#import <SignalServiceKit/OWSCallOfferMessage.h>
#import <SignalServiceKit/OWSContactsOutputStream.h>
#import <SignalServiceKit/OWSDispatch.h>
#import <SignalServiceKit/OWSEndSessionMessage.h>

@ -31,7 +31,15 @@ class DebugUICalling: DebugUIPage {
guard let strongSelf = self else { return }
let kFakeCallId = UInt64(12345)
let hangupMessage = OWSCallHangupMessage(callId: kFakeCallId)
var hangupMessage: SSKProtoCallMessageHangup
do {
let hangupBuilder = SSKProtoCallMessageHangup.SSKProtoCallMessageHangupBuilder()
hangupBuilder.setId(kFakeCallId)
hangupMessage = try hangupBuilder.build()
} catch {
owsFail("\(strongSelf.logTag) could not build proto")
return
}
let callMessage = OWSOutgoingCallMessage(thread: thread, hangupMessage: hangupMessage)
strongSelf.messageSender.sendPromise(message: callMessage).then {
@ -44,7 +52,16 @@ class DebugUICalling: DebugUIPage {
guard let strongSelf = self else { return }
let kFakeCallId = UInt64(12345)
let busyMessage = OWSCallBusyMessage(callId: kFakeCallId)
var busyMessage: SSKProtoCallMessageBusy
do {
let busyBuilder = SSKProtoCallMessageBusy.SSKProtoCallMessageBusyBuilder()
busyBuilder.setId(kFakeCallId)
busyMessage = try busyBuilder.build()
} catch {
owsFail("Couldn't build proto in \(#function)")
return
}
let callMessage = OWSOutgoingCallMessage(thread: thread, busyMessage: busyMessage)
strongSelf.messageSender.sendPromise(message: callMessage).then {

@ -78,6 +78,7 @@ public enum CallError: Error {
case externalError(underlyingError: Error)
case timeout(description: String)
case obsoleteCall(description: String)
case fatalError(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)
do {
let offerBuilder = SSKProtoCallMessageOffer.SSKProtoCallMessageOfferBuilder()
offerBuilder.setId(call.signalingId)
offerBuilder.setSessionDescription(sessionDescription.sdp)
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.fatalError(description: "Couldn't build proto in \(#function)")
}
}
}.then {
guard self.call == call else {
@ -537,12 +546,19 @@ private class SignalCallData: NSObject {
Logger.info("\(self.logTag) \(#function) for call: \(call.identifiersForLogs) thread: \(call.thread.contactIdentifier())")
SwiftAssertIsOnMainThread(#function)
let busyMessage = OWSCallBusyMessage(callId: call.signalingId)
let callMessage = OWSOutgoingCallMessage(thread: call.thread, busyMessage: busyMessage)
let sendPromise = messageSender.sendPromise(message: callMessage)
sendPromise.retainUntilComplete()
do {
let busyBuilder = SSKProtoCallMessageBusy.SSKProtoCallMessageBusyBuilder()
busyBuilder.setId(call.signalingId)
let busyMessage = try busyBuilder.build()
let callMessage = OWSOutgoingCallMessage(thread: call.thread, busyMessage: busyMessage)
let sendPromise = messageSender.sendPromise(message: callMessage)
sendPromise.retainUntilComplete()
handleMissedCall(call)
handleMissedCall(call)
} catch {
owsFail("Couldn't build proto in \(#function)")
}
}
/**
@ -703,10 +719,18 @@ private class SignalCallData: NSObject {
throw CallError.obsoleteCall(description: "negotiateSessionDescription() response for obsolete call")
}
let answerMessage = OWSCallAnswerMessage(callId: newCall.signalingId, sessionDescription: negotiatedSessionDescription.sdp)
let callAnswerMessage = OWSOutgoingCallMessage(thread: thread, answerMessage: answerMessage)
do {
let answerBuilder = SSKProtoCallMessageAnswer.SSKProtoCallMessageAnswerBuilder()
answerBuilder.setId(newCall.signalingId)
answerBuilder.setSessionDescription(negotiatedSessionDescription.sdp)
let answer = try answerBuilder.build()
let callAnswerMessage = OWSOutgoingCallMessage(thread: thread, answerMessage: answer)
return self.messageSender.sendPromise(message: callAnswerMessage)
return self.messageSender.sendPromise(message: callAnswerMessage)
} catch {
owsFail("Couldn't build proto in \(#function)")
throw CallError.fatalError(description: "Couldn't build proto in \(#function)")
}
}.then {
guard self.call == newCall else {
throw CallError.obsoleteCall(description: "sendPromise(message: ) response for obsolete call")
@ -824,12 +848,38 @@ private class SignalCallData: NSObject {
return
}
let iceUpdateMessage = OWSCallIceUpdateMessage(callId: call.signalingId, sdp: iceCandidate.sdp, sdpMLineIndex: iceCandidate.sdpMLineIndex, sdpMid: iceCandidate.sdpMid)
guard let sdpMid = iceCandidate.sdpMid else {
owsFail("Missing sdpMid in \(#function)")
throw CallError.fatalError(description: "Missing sdpMid in \(#function)")
}
guard iceCandidate.sdpMLineIndex < UINT32_MAX else {
owsFail("Invalid sdpMLineIndex in \(#function)")
throw CallError.fatalError(description: "Invalid sdpMLineIndex in \(#function)")
}
Logger.info("\(self.logTag) in \(#function) sending ICE Candidate \(call.identifiersForLogs).")
let callMessage = OWSOutgoingCallMessage(thread: call.thread, iceUpdateMessage: iceUpdateMessage)
let sendPromise = self.messageSender.sendPromise(message: callMessage)
sendPromise.retainUntilComplete()
do {
/**
* Sent by both parties out of band of the RTC calling channels, as part of setting up those channels. The messages
* include network accessibility information from the perspective of each client. Once compatible ICEUpdates have been
* exchanged, the clients can connect.
*/
let iceUpdateBuilder = SSKProtoCallMessageIceUpdate.SSKProtoCallMessageIceUpdateBuilder()
iceUpdateBuilder.setId(call.signalingId)
iceUpdateBuilder.setSdp(iceCandidate.sdp)
iceUpdateBuilder.setSdpMlineIndex(UInt32(iceCandidate.sdpMLineIndex))
iceUpdateBuilder.setSdpMid(sdpMid)
let iceUpdate = try iceUpdateBuilder.build()
let callMessage = OWSOutgoingCallMessage(thread: call.thread, iceUpdateMessage: iceUpdate)
let sendPromise = self.messageSender.sendPromise(message: callMessage)
sendPromise.retainUntilComplete()
} catch {
owsFail("Couldn't build proto in \(#function)")
throw CallError.fatalError(description: "Couldn't build proto in \(#function)")
}
}.catch { error in
OWSProdInfo(OWSAnalyticsEvents.callServiceErrorHandleLocalAddedIceCandidate(), file: #file, function: #function, line: #line)
Logger.error("\(self.logTag) in \(#function) waitUntilReadyToSendIceUpdates failed with error: \(error)")
@ -1158,17 +1208,24 @@ private class SignalCallData: NSObject {
}
// If the call hasn't started yet, we don't have a data channel to communicate the hang up. Use Signal Service Message.
let hangupMessage = OWSCallHangupMessage(callId: call.signalingId)
let callMessage = OWSOutgoingCallMessage(thread: call.thread, hangupMessage: hangupMessage)
let sendPromise = self.messageSender.sendPromise(message: callMessage).then {
Logger.debug("\(self.logTag) successfully sent hangup call message to \(call.thread.contactIdentifier())")
}.catch { error in
OWSProdInfo(OWSAnalyticsEvents.callServiceErrorHandleLocalHungupCall(), file: #file, function: #function, line: #line)
Logger.error("\(self.logTag) failed to send hangup call message to \(call.thread.contactIdentifier()) with error: \(error)")
}
sendPromise.retainUntilComplete()
do {
let hangupBuilder = SSKProtoCallMessageHangup.SSKProtoCallMessageHangupBuilder()
hangupBuilder.setId(call.signalingId)
let hangupProto = try hangupBuilder.build()
let callMessage = OWSOutgoingCallMessage(thread: call.thread, hangupMessage: hangupProto)
let sendPromise = self.messageSender.sendPromise(message: callMessage).then {
Logger.debug("\(self.logTag) successfully sent hangup call message to \(call.thread.contactIdentifier())")
}.catch { error in
OWSProdInfo(OWSAnalyticsEvents.callServiceErrorHandleLocalHungupCall(), file: #file, function: #function, line: #line)
Logger.error("\(self.logTag) failed to send hangup call message to \(call.thread.contactIdentifier()) with error: \(error)")
}
sendPromise.retainUntilComplete()
terminateCall()
terminateCall()
} catch {
handleFailedCall(failedCall: call, error: CallError.assertionError(description: "\(self.logTag) couldn't build proto in \(#function)"))
}
}
/**

@ -1,23 +0,0 @@
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
NS_ASSUME_NONNULL_BEGIN
@class SSKProtoCallMessageAnswer;
/**
* Sent by the call recipient upon accepting a CallOffer
*/
@interface OWSCallAnswerMessage : NSObject
- (instancetype)initWithCallId:(UInt64)callId sessionDescription:(NSString *)sessionDescription;
@property (nonatomic, readonly) UInt64 callId;
@property (nonatomic, readonly, copy) NSString *sessionDescription;
- (nullable SSKProtoCallMessageAnswer *)asProtobuf;
@end
NS_ASSUME_NONNULL_END

@ -1,43 +0,0 @@
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
#import "OWSCallAnswerMessage.h"
#import <SignalServiceKit/SignalServiceKit-Swift.h>
NS_ASSUME_NONNULL_BEGIN
@implementation OWSCallAnswerMessage
- (instancetype)initWithCallId:(UInt64)callId sessionDescription:(NSString *)sessionDescription
{
self = [super init];
if (!self) {
return self;
}
_callId = callId;
_sessionDescription = sessionDescription;
return self;
}
- (nullable SSKProtoCallMessageAnswer *)asProtobuf
{
SSKProtoCallMessageAnswerBuilder *builder = [SSKProtoCallMessageAnswerBuilder new];
builder.id = self.callId;
builder.sessionDescription = self.sessionDescription;
NSError *error;
SSKProtoCallMessageAnswer *_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

@ -1,24 +0,0 @@
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
#import "OWSOutgoingCallMessage.h"
NS_ASSUME_NONNULL_BEGIN
@class SSKProtoCallMessageBusy;
/**
* Sent by the call recipient after receiving a call offer when they are already in a call.
*/
@interface OWSCallBusyMessage : OWSOutgoingCallMessage
- (instancetype)initWithCallId:(UInt64)callId;
@property (nonatomic, readonly) UInt64 callId;
- (nullable SSKProtoCallMessageBusy *)asProtobuf;
@end
NS_ASSUME_NONNULL_END

@ -1,41 +0,0 @@
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
#import "OWSCallBusyMessage.h"
#import <SignalServiceKit/SignalServiceKit-Swift.h>
NS_ASSUME_NONNULL_BEGIN
@implementation OWSCallBusyMessage
- (instancetype)initWithCallId:(UInt64)callId
{
self = [super init];
if (!self) {
return self;
}
_callId = callId;
return self;
}
- (nullable SSKProtoCallMessageBusy *)asProtobuf
{
SSKProtoCallMessageBusyBuilder *builder = [SSKProtoCallMessageBusyBuilder new];
builder.id = self.callId;
NSError *error;
SSKProtoCallMessageBusy *_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

@ -1,24 +0,0 @@
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
#import "OWSOutgoingCallMessage.h"
NS_ASSUME_NONNULL_BEGIN
@class SSKProtoCallMessageHangup;
/**
* Sent by either party in a call to indicate the user intentionally ended the call.
*/
@interface OWSCallHangupMessage : OWSOutgoingCallMessage
- (instancetype)initWithCallId:(UInt64)callId;
@property (nonatomic, readonly) UInt64 callId;
- (nullable SSKProtoCallMessageHangup *)asProtobuf;
@end
NS_ASSUME_NONNULL_END

@ -1,42 +0,0 @@
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
#import "OWSCallHangupMessage.h"
#import <SignalServiceKit/SignalServiceKit-Swift.h>
NS_ASSUME_NONNULL_BEGIN
@implementation OWSCallHangupMessage
- (instancetype)initWithCallId:(UInt64)callId
{
self = [super init];
if (!self) {
return self;
}
_callId = callId;
return self;
}
- (nullable SSKProtoCallMessageHangup *)asProtobuf
{
SSKProtoCallMessageHangupBuilder *builder = [SSKProtoCallMessageHangupBuilder new];
builder.id = self.callId;
NSError *error;
SSKProtoCallMessageHangup *_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

@ -1,30 +0,0 @@
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
NS_ASSUME_NONNULL_BEGIN
@class SSKProtoCallMessageIceUpdate;
/**
* Sent by both parties out of band of the RTC calling channels, as part of setting up those channels. The messages
* include network accessability information from the perspective of each client. Once compatible ICEUpdates have been
* exchanged, the clients can connect directly.
*/
@interface OWSCallIceUpdateMessage : NSObject
- (instancetype)initWithCallId:(UInt64)callId
sdp:(NSString *)sdp
sdpMLineIndex:(SInt32)sdpMLineIndex
sdpMid:(nullable NSString *)sdpMid;
@property (nonatomic, readonly) UInt64 callId;
@property (nonatomic, readonly, copy) NSString *sdp;
@property (nonatomic, readonly) SInt32 sdpMLineIndex;
@property (nullable, nonatomic, readonly, copy) NSString *sdpMid;
- (nullable SSKProtoCallMessageIceUpdate *)asProtobuf;
@end
NS_ASSUME_NONNULL_END

@ -1,47 +0,0 @@
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
#import "OWSCallIceUpdateMessage.h"
#import <SignalServiceKit/SignalServiceKit-Swift.h>
@implementation OWSCallIceUpdateMessage
- (instancetype)initWithCallId:(UInt64)callId
sdp:(NSString *)sdp
sdpMLineIndex:(SInt32)sdpMLineIndex
sdpMid:(nullable NSString *)sdpMid
{
self = [super init];
if (!self) {
return self;
}
_callId = callId;
_sdp = sdp;
_sdpMLineIndex = sdpMLineIndex;
_sdpMid = sdpMid;
return self;
}
- (nullable SSKProtoCallMessageIceUpdate *)asProtobuf
{
SSKProtoCallMessageIceUpdateBuilder *builder =
[SSKProtoCallMessageIceUpdateBuilder new];
[builder setId:self.callId];
[builder setSdp:self.sdp];
[builder setSdpMlineIndex:self.sdpMLineIndex];
[builder setSdpMid:self.sdpMid];
NSError *error;
SSKProtoCallMessageIceUpdate *_Nullable result = [builder buildAndReturnError:&error];
if (error || !result) {
OWSFail(@"%@ could not build protobuf: %@", self.logTag, error);
return nil;
}
return result;
}
@end

@ -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

@ -1,43 +0,0 @@
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
#import "OWSCallOfferMessage.h"
#import <SignalServiceKit/SignalServiceKit-Swift.h>
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

@ -6,11 +6,11 @@
NS_ASSUME_NONNULL_BEGIN
@class OWSCallAnswerMessage;
@class OWSCallBusyMessage;
@class OWSCallHangupMessage;
@class OWSCallIceUpdateMessage;
@class OWSCallOfferMessage;
@class SSKProtoCallMessageAnswer;
@class SSKProtoCallMessageBusy;
@class SSKProtoCallMessageHangup;
@class SSKProtoCallMessageIceUpdate;
@class SSKProtoCallMessageOffer;
@class TSThread;
/**
@ -29,19 +29,19 @@ 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 answerMessage:(OWSCallAnswerMessage *)answerMessage;
- (instancetype)initWithThread:(TSThread *)thread iceUpdateMessage:(OWSCallIceUpdateMessage *)iceUpdateMessage;
- (instancetype)initWithThread:(TSThread *)thread offerMessage:(SSKProtoCallMessageOffer *)offerMessage;
- (instancetype)initWithThread:(TSThread *)thread answerMessage:(SSKProtoCallMessageAnswer *)answerMessage;
- (instancetype)initWithThread:(TSThread *)thread iceUpdateMessage:(SSKProtoCallMessageIceUpdate *)iceUpdateMessage;
- (instancetype)initWithThread:(TSThread *)thread
iceUpdateMessages:(NSArray<OWSCallIceUpdateMessage *> *)iceUpdateMessage;
- (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<OWSCallIceUpdateMessage *> *iceUpdateMessages;
@property (nullable, nonatomic, readonly, strong) OWSCallHangupMessage *hangupMessage;
@property (nullable, nonatomic, readonly, strong) OWSCallBusyMessage *busyMessage;
iceUpdateMessages:(NSArray<SSKProtoCallMessageIceUpdate *> *)iceUpdateMessage;
- (instancetype)initWithThread:(TSThread *)thread hangupMessage:(SSKProtoCallMessageHangup *)hangupMessage;
- (instancetype)initWithThread:(TSThread *)thread busyMessage:(SSKProtoCallMessageBusy *)busyMessage;
@property (nullable, nonatomic, readonly) SSKProtoCallMessageOffer *offerMessage;
@property (nullable, nonatomic, readonly) SSKProtoCallMessageAnswer *answerMessage;
@property (nullable, nonatomic, readonly) NSArray<SSKProtoCallMessageIceUpdate *> *iceUpdateMessages;
@property (nullable, nonatomic, readonly) SSKProtoCallMessageHangup *hangupMessage;
@property (nullable, nonatomic, readonly) SSKProtoCallMessageBusy *busyMessage;
@end

@ -4,11 +4,6 @@
#import "OWSOutgoingCallMessage.h"
#import "NSDate+OWS.h"
#import "OWSCallAnswerMessage.h"
#import "OWSCallBusyMessage.h"
#import "OWSCallHangupMessage.h"
#import "OWSCallIceUpdateMessage.h"
#import "OWSCallOfferMessage.h"
#import "ProtoUtils.h"
#import "SignalRecipient.h"
#import "TSContactThread.h"
@ -39,7 +34,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) {
@ -51,7 +46,7 @@ NS_ASSUME_NONNULL_BEGIN
return self;
}
- (instancetype)initWithThread:(TSThread *)thread answerMessage:(OWSCallAnswerMessage *)answerMessage
- (instancetype)initWithThread:(TSThread *)thread answerMessage:(SSKProtoCallMessageAnswer *)answerMessage
{
self = [self initWithThread:thread];
if (!self) {
@ -63,7 +58,7 @@ NS_ASSUME_NONNULL_BEGIN
return self;
}
- (instancetype)initWithThread:(TSThread *)thread iceUpdateMessage:(OWSCallIceUpdateMessage *)iceUpdateMessage
- (instancetype)initWithThread:(TSThread *)thread iceUpdateMessage:(SSKProtoCallMessageIceUpdate *)iceUpdateMessage
{
self = [self initWithThread:thread];
if (!self) {
@ -76,7 +71,7 @@ NS_ASSUME_NONNULL_BEGIN
}
- (instancetype)initWithThread:(TSThread *)thread
iceUpdateMessages:(NSArray<OWSCallIceUpdateMessage *> *)iceUpdateMessages
iceUpdateMessages:(NSArray<SSKProtoCallMessageIceUpdate *> *)iceUpdateMessages
{
self = [self initWithThread:thread];
if (!self) {
@ -88,7 +83,7 @@ NS_ASSUME_NONNULL_BEGIN
return self;
}
- (instancetype)initWithThread:(TSThread *)thread hangupMessage:(OWSCallHangupMessage *)hangupMessage
- (instancetype)initWithThread:(TSThread *)thread hangupMessage:(SSKProtoCallMessageHangup *)hangupMessage
{
self = [self initWithThread:thread];
if (!self) {
@ -100,7 +95,7 @@ NS_ASSUME_NONNULL_BEGIN
return self;
}
- (instancetype)initWithThread:(TSThread *)thread busyMessage:(OWSCallBusyMessage *)busyMessage
- (instancetype)initWithThread:(TSThread *)thread busyMessage:(SSKProtoCallMessageBusy *)busyMessage
{
self = [self initWithThread:thread];
if (!self) {
@ -147,45 +142,23 @@ 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) {
SSKProtoCallMessageAnswer *_Nullable proto = [self.answerMessage asProtobuf];
if (!proto) {
return nil;
}
[builder setAnswer:proto];
[builder setAnswer:self.answerMessage];
}
if (self.iceUpdateMessages) {
for (OWSCallIceUpdateMessage *iceUpdateMessage in self.iceUpdateMessages) {
SSKProtoCallMessageIceUpdate *_Nullable proto = [iceUpdateMessage asProtobuf];
if (!proto) {
return nil;
}
[builder addIceUpdate:proto];
}
if (self.iceUpdateMessages.count > 0) {
[builder setIceUpdate:self.iceUpdateMessages];
}
if (self.hangupMessage) {
SSKProtoCallMessageHangup *_Nullable proto = [self.hangupMessage asProtobuf];
if (!proto) {
return nil;
}
[builder setHangup:proto];
[builder setHangup:self.hangupMessage];
}
if (self.busyMessage) {
SSKProtoCallMessageBusy *_Nullable proto = [self.busyMessage asProtobuf];
if (!proto) {
return nil;
}
[builder setBusy:proto];
[builder setBusy:self.busyMessage];
}
[ProtoUtils addLocalProfileKeyIfNecessary:self.thread recipientId:recipientId callMessageBuilder:builder];

Loading…
Cancel
Save