|
|
|
@ -125,7 +125,7 @@ protocol CallServiceObserver: class {
|
|
|
|
|
didSet {
|
|
|
|
|
AssertIsOnMainThread()
|
|
|
|
|
|
|
|
|
|
Logger.debug("\(self.TAG) .peerConnectionClient setter: \(oldValue != nil) -> \(peerConnectionClient != nil) \(peerConnectionClient)")
|
|
|
|
|
Logger.debug("\(self.TAG) .peerConnectionClient setter: \(oldValue != nil) -> \(peerConnectionClient != nil) \(String(describing: peerConnectionClient))")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -141,7 +141,7 @@ protocol CallServiceObserver: class {
|
|
|
|
|
updateIsVideoEnabled()
|
|
|
|
|
updateLockTimerEnabling()
|
|
|
|
|
|
|
|
|
|
Logger.debug("\(self.TAG) .call setter: \(oldValue != nil) -> \(call != nil) \(call)")
|
|
|
|
|
Logger.debug("\(self.TAG) .call setter: \(oldValue != nil) -> \(call != nil) \(String(describing: call))")
|
|
|
|
|
|
|
|
|
|
for observer in observers {
|
|
|
|
|
observer.value?.didUpdateCall(call:call)
|
|
|
|
@ -368,9 +368,10 @@ protocol CallServiceObserver: class {
|
|
|
|
|
|
|
|
|
|
if pendingIceUpdateMessages.count > 0 {
|
|
|
|
|
let callMessage = OWSOutgoingCallMessage(thread: thread, iceUpdateMessages: pendingIceUpdateMessages)
|
|
|
|
|
_ = messageSender.sendCallMessage(callMessage).catch { error in
|
|
|
|
|
let sendPromise = messageSender.sendCallMessage(callMessage).catch { error in
|
|
|
|
|
Logger.error("\(self.TAG) failed to send ice updates in \(#function) with error: \(error)")
|
|
|
|
|
}
|
|
|
|
|
sendPromise.retainUntilComplete()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
guard let peerConnectionClient = self.peerConnectionClient else {
|
|
|
|
@ -379,7 +380,7 @@ protocol CallServiceObserver: class {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let sessionDescription = RTCSessionDescription(type: .answer, sdp: sessionDescription)
|
|
|
|
|
_ = peerConnectionClient.setRemoteSessionDescription(sessionDescription).then {
|
|
|
|
|
let setDescriptionPromise = peerConnectionClient.setRemoteSessionDescription(sessionDescription).then {
|
|
|
|
|
Logger.debug("\(self.TAG) successfully set remote description")
|
|
|
|
|
}.catch { error in
|
|
|
|
|
if let callError = error as? CallError {
|
|
|
|
@ -389,6 +390,7 @@ protocol CallServiceObserver: class {
|
|
|
|
|
self.handleFailedCall(failedCall: call, error: externalError)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
setDescriptionPromise.retainUntilComplete()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -424,7 +426,8 @@ protocol CallServiceObserver: class {
|
|
|
|
|
|
|
|
|
|
let busyMessage = OWSCallBusyMessage(callId: call.signalingId)
|
|
|
|
|
let callMessage = OWSOutgoingCallMessage(thread: thread, busyMessage: busyMessage)
|
|
|
|
|
_ = messageSender.sendCallMessage(callMessage)
|
|
|
|
|
let sendPromise = messageSender.sendCallMessage(callMessage)
|
|
|
|
|
sendPromise.retainUntilComplete()
|
|
|
|
|
|
|
|
|
|
handleMissedCall(call, thread: thread)
|
|
|
|
|
}
|
|
|
|
@ -622,7 +625,8 @@ protocol CallServiceObserver: class {
|
|
|
|
|
|
|
|
|
|
if self.sendIceUpdatesImmediately {
|
|
|
|
|
let callMessage = OWSOutgoingCallMessage(thread: thread, iceUpdateMessage: iceUpdateMessage)
|
|
|
|
|
_ = self.messageSender.sendCallMessage(callMessage)
|
|
|
|
|
let sendPromise = self.messageSender.sendCallMessage(callMessage)
|
|
|
|
|
sendPromise.retainUntilComplete()
|
|
|
|
|
} else {
|
|
|
|
|
// For outgoing messages, we wait to send ice updates until we're sure client received our call message.
|
|
|
|
|
// e.g. if the client has blocked our message due to an identity change, we'd otherwise
|
|
|
|
@ -880,11 +884,12 @@ protocol CallServiceObserver: class {
|
|
|
|
|
// 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: thread, hangupMessage: hangupMessage)
|
|
|
|
|
_ = self.messageSender.sendCallMessage(callMessage).then {
|
|
|
|
|
let sendPromise = self.messageSender.sendCallMessage(callMessage).then {
|
|
|
|
|
Logger.debug("\(self.TAG) successfully sent hangup call message to \(thread)")
|
|
|
|
|
}.catch { error in
|
|
|
|
|
Logger.error("\(self.TAG) failed to send hangup call message to \(thread) with error: \(error)")
|
|
|
|
|
}
|
|
|
|
|
sendPromise.retainUntilComplete()
|
|
|
|
|
|
|
|
|
|
terminateCall()
|
|
|
|
|
}
|
|
|
|
|