From 0749510f4ead63dc81057b23f532f4eae289fc38 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Tue, 17 Aug 2021 14:02:28 +1000 Subject: [PATCH] Minor refactoring & clean up WebRTC constraints --- Session.xcodeproj/project.pbxproj | 24 ++++++++--------- Session/Backups/OWSBackupAPI.swift | 1 + Session/Calls/CallVCV2+MessageSending.swift | 2 +- Session/Calls/CallVCV2+WebSocket.swift | 12 ++++----- Session/Calls/CallVCV2.swift | 12 ++++----- .../Calls/Temp/WebSocket.swift | 12 ++++----- ...ft => WebRTCWrapper+MessageHandling.swift} | 9 ++++--- ...anager+UI.swift => WebRTCWrapper+UI.swift} | 2 +- ...{CallManager.swift => WebRTCWrapper.swift} | 27 ++++++++----------- 9 files changed, 49 insertions(+), 52 deletions(-) rename SessionMessagingKit/Calls/{CallManager+MessageHandling.swift => WebRTCWrapper+MessageHandling.swift} (70%) rename SessionMessagingKit/Calls/{CallManager+UI.swift => WebRTCWrapper+UI.swift} (94%) rename SessionMessagingKit/Calls/{CallManager.swift => WebRTCWrapper.swift} (88%) diff --git a/Session.xcodeproj/project.pbxproj b/Session.xcodeproj/project.pbxproj index dfb08bebe..c866a785e 100644 --- a/Session.xcodeproj/project.pbxproj +++ b/Session.xcodeproj/project.pbxproj @@ -157,7 +157,7 @@ B6FE7EB71ADD62FA00A6D22F /* PushKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B6FE7EB61ADD62FA00A6D22F /* PushKit.framework */; }; B8041A9525C8FA1D003C2166 /* MediaLoaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8041A9425C8FA1D003C2166 /* MediaLoaderView.swift */; }; B8041AA725C90927003C2166 /* TypingIndicatorCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8041AA625C90927003C2166 /* TypingIndicatorCell.swift */; }; - B806ECA126C4A7E4008BDA44 /* CallManager+UI.swift in Sources */ = {isa = PBXBuildFile; fileRef = B806ECA026C4A7E4008BDA44 /* CallManager+UI.swift */; }; + B806ECA126C4A7E4008BDA44 /* WebRTCWrapper+UI.swift in Sources */ = {isa = PBXBuildFile; fileRef = B806ECA026C4A7E4008BDA44 /* WebRTCWrapper+UI.swift */; }; B80A579F23DFF1F300876683 /* NewClosedGroupVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B80A579E23DFF1F300876683 /* NewClosedGroupVC.swift */; }; B80F469A26C63DD000DCE243 /* RoomInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = B80F469926C63DD000DCE243 /* RoomInfo.swift */; }; B817AD9A26436593009DF825 /* SimplifiedConversationCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B817AD9926436593009DF825 /* SimplifiedConversationCell.swift */; }; @@ -255,7 +255,7 @@ B8B558F326C4CA4600693325 /* TestCallConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8B558F226C4CA4600693325 /* TestCallConfig.swift */; }; B8B558FB26C4D25C00693325 /* WebSocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8B558FA26C4D25C00693325 /* WebSocket.swift */; }; B8B558FD26C4D35400693325 /* TestCallServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8B558FC26C4D35400693325 /* TestCallServer.swift */; }; - B8B558FF26C4E05E00693325 /* CallManager+MessageHandling.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8B558FE26C4E05E00693325 /* CallManager+MessageHandling.swift */; }; + B8B558FF26C4E05E00693325 /* WebRTCWrapper+MessageHandling.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8B558FE26C4E05E00693325 /* WebRTCWrapper+MessageHandling.swift */; }; B8B5590126C4E2A400693325 /* SignalingMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8B5590026C4E2A400693325 /* SignalingMessage.swift */; }; B8BB82A5238F627000BA5194 /* HomeVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8BB82A4238F627000BA5194 /* HomeVC.swift */; }; B8BC00C0257D90E30032E807 /* General.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8BC00BF257D90E30032E807 /* General.swift */; }; @@ -278,7 +278,7 @@ B8D64FCB25BA78A90029CFC0 /* SignalUtilitiesKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C33FD9AB255A548A00E217F9 /* SignalUtilitiesKit.framework */; }; B8D84EA325DF745A005A043E /* LinkPreviewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8D84EA225DF745A005A043E /* LinkPreviewState.swift */; }; B8D84ECF25E3108A005A043E /* ExpandingAttachmentsButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8D84ECE25E3108A005A043E /* ExpandingAttachmentsButton.swift */; }; - B8DE1FB426C22F2F0079C9CE /* CallManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8DE1FB326C22F2F0079C9CE /* CallManager.swift */; }; + B8DE1FB426C22F2F0079C9CE /* WebRTCWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8DE1FB326C22F2F0079C9CE /* WebRTCWrapper.swift */; }; B8DE1FB626C22FCB0079C9CE /* CallMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8DE1FB526C22FCB0079C9CE /* CallMessage.swift */; }; B8EB20EE2640F28000773E52 /* VisibleMessage+OpenGroupInvitation.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8EB20ED2640F28000773E52 /* VisibleMessage+OpenGroupInvitation.swift */; }; B8EB20F02640F7F000773E52 /* OpenGroupInvitationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8EB20EF2640F7F000773E52 /* OpenGroupInvitationView.swift */; }; @@ -1154,7 +1154,7 @@ B6FE7EB61ADD62FA00A6D22F /* PushKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PushKit.framework; path = System/Library/Frameworks/PushKit.framework; sourceTree = SDKROOT; }; B8041A9425C8FA1D003C2166 /* MediaLoaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaLoaderView.swift; sourceTree = ""; }; B8041AA625C90927003C2166 /* TypingIndicatorCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TypingIndicatorCell.swift; sourceTree = ""; }; - B806ECA026C4A7E4008BDA44 /* CallManager+UI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CallManager+UI.swift"; sourceTree = ""; }; + B806ECA026C4A7E4008BDA44 /* WebRTCWrapper+UI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "WebRTCWrapper+UI.swift"; sourceTree = ""; }; B80A579E23DFF1F300876683 /* NewClosedGroupVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewClosedGroupVC.swift; sourceTree = ""; }; B80F469926C63DD000DCE243 /* RoomInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomInfo.swift; sourceTree = ""; }; B817AD9926436593009DF825 /* SimplifiedConversationCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimplifiedConversationCell.swift; sourceTree = ""; }; @@ -1233,7 +1233,7 @@ B8B558F226C4CA4600693325 /* TestCallConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestCallConfig.swift; sourceTree = ""; }; B8B558FA26C4D25C00693325 /* WebSocket.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSocket.swift; sourceTree = ""; }; B8B558FC26C4D35400693325 /* TestCallServer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestCallServer.swift; sourceTree = ""; }; - B8B558FE26C4E05E00693325 /* CallManager+MessageHandling.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CallManager+MessageHandling.swift"; sourceTree = ""; }; + B8B558FE26C4E05E00693325 /* WebRTCWrapper+MessageHandling.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "WebRTCWrapper+MessageHandling.swift"; sourceTree = ""; }; B8B5590026C4E2A400693325 /* SignalingMessage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignalingMessage.swift; sourceTree = ""; }; B8B5BCEB2394D869003823C9 /* Button.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Button.swift; sourceTree = ""; }; B8BAC75B2695645400EA1759 /* hr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hr; path = hr.lproj/Localizable.strings; sourceTree = ""; }; @@ -1272,7 +1272,7 @@ B8D8F1BC25661C6F0092EF10 /* Storage+OnionRequests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Storage+OnionRequests.swift"; sourceTree = ""; }; B8D8F1EF256621180092EF10 /* MessageSender+Convenience.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = "MessageSender+Convenience.swift"; path = "../../SignalUtilitiesKit/Messaging/Sending & Receiving/MessageSender+Convenience.swift"; sourceTree = ""; }; B8DE1FAF26C228780079C9CE /* SignalRingRTC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SignalRingRTC.framework; path = Dependencies/SignalRingRTC.framework; sourceTree = ""; }; - B8DE1FB326C22F2F0079C9CE /* CallManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallManager.swift; sourceTree = ""; }; + B8DE1FB326C22F2F0079C9CE /* WebRTCWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebRTCWrapper.swift; sourceTree = ""; }; B8DE1FB526C22FCB0079C9CE /* CallMessage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallMessage.swift; sourceTree = ""; }; B8EB20E6263F7E4B00773E52 /* sk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sk; path = sk.lproj/Localizable.strings; sourceTree = ""; }; B8EB20ED2640F28000773E52 /* VisibleMessage+OpenGroupInvitation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "VisibleMessage+OpenGroupInvitation.swift"; sourceTree = ""; }; @@ -2386,9 +2386,9 @@ isa = PBXGroup; children = ( B877E24026CA11170007970A /* Temp */, - B8DE1FB326C22F2F0079C9CE /* CallManager.swift */, - B806ECA026C4A7E4008BDA44 /* CallManager+UI.swift */, - B8B558FE26C4E05E00693325 /* CallManager+MessageHandling.swift */, + B8DE1FB326C22F2F0079C9CE /* WebRTCWrapper.swift */, + B806ECA026C4A7E4008BDA44 /* WebRTCWrapper+UI.swift */, + B8B558FE26C4E05E00693325 /* WebRTCWrapper+MessageHandling.swift */, ); path = Calls; sourceTree = ""; @@ -4702,7 +4702,7 @@ C352A32F2557549C00338F3E /* NotifyPNServerJob.swift in Sources */, 7B4C75CB26B37E0F0000AC89 /* UnsendRequest.swift in Sources */, C300A5F22554B09800555489 /* MessageSender.swift in Sources */, - B8B558FF26C4E05E00693325 /* CallManager+MessageHandling.swift in Sources */, + B8B558FF26C4E05E00693325 /* WebRTCWrapper+MessageHandling.swift in Sources */, C3C2A74D2553A39700C340D1 /* VisibleMessage.swift in Sources */, C32C5AAD256DBE8F003C73A2 /* TSInfoMessage.m in Sources */, C32C5A13256DB7A5003C73A2 /* PushNotificationAPI.swift in Sources */, @@ -4740,7 +4740,7 @@ B8856ECE256F1E58001CE70E /* OWSPreferences.m in Sources */, C3C2A7842553AAF300C340D1 /* SNProto.swift in Sources */, C32C5DC0256DD743003C73A2 /* Poller.swift in Sources */, - B8DE1FB426C22F2F0079C9CE /* CallManager.swift in Sources */, + B8DE1FB426C22F2F0079C9CE /* WebRTCWrapper.swift in Sources */, C3C2A7682553A3D900C340D1 /* VisibleMessage+Contact.swift in Sources */, C3A3A171256E1D25004D228D /* SSKReachabilityManager.swift in Sources */, B8DE1FB626C22FCB0079C9CE /* CallMessage.swift in Sources */, @@ -4825,7 +4825,7 @@ C32C5FD6256E0346003C73A2 /* Notification+Thread.swift in Sources */, C3BBE0C72554F1570050F1E3 /* FixedWidthInteger+BigEndian.swift in Sources */, B8B5590126C4E2A400693325 /* SignalingMessage.swift in Sources */, - B806ECA126C4A7E4008BDA44 /* CallManager+UI.swift in Sources */, + B806ECA126C4A7E4008BDA44 /* WebRTCWrapper+UI.swift in Sources */, C32C5C88256DD0D2003C73A2 /* Storage+Messaging.swift in Sources */, C32C59C7256DB41F003C73A2 /* TSThread.m in Sources */, C300A5B22554AF9800555489 /* VisibleMessage+Profile.swift in Sources */, diff --git a/Session/Backups/OWSBackupAPI.swift b/Session/Backups/OWSBackupAPI.swift index 316457729..f3de1b488 100644 --- a/Session/Backups/OWSBackupAPI.swift +++ b/Session/Backups/OWSBackupAPI.swift @@ -613,6 +613,7 @@ import PromiseKit case .available: Logger.verbose("CloudKit access okay.") resolver.fulfill(()) + default: preconditionFailure() } } return promise diff --git a/Session/Calls/CallVCV2+MessageSending.swift b/Session/Calls/CallVCV2+MessageSending.swift index 11f0bcfe2..c472cce3d 100644 --- a/Session/Calls/CallVCV2+MessageSending.swift +++ b/Session/Calls/CallVCV2+MessageSending.swift @@ -1,6 +1,6 @@ import WebRTC -extension CallVCV2 : CallManagerDelegate { +extension CallVCV2 : WebRTCWrapperDelegate { /// Invoked by `CallManager` upon initiating or accepting a call. This method sends the SDP to the other /// party before streaming starts. diff --git a/Session/Calls/CallVCV2+WebSocket.swift b/Session/Calls/CallVCV2+WebSocket.swift index 26ca6e61f..40763be5e 100644 --- a/Session/Calls/CallVCV2+WebSocket.swift +++ b/Session/Calls/CallVCV2+WebSocket.swift @@ -1,7 +1,7 @@ extension CallVCV2 : WebSocketDelegate { - func webSocketDidConnect(_ webSocket: WebSocket) { + func handleWebSocketConnected() { guard let room = room else { return } let json = [ "cmd" : "register", @@ -10,18 +10,18 @@ extension CallVCV2 : WebSocketDelegate { ] guard let data = try? JSONSerialization.data(withJSONObject: json, options: [ .prettyPrinted ]) else { return } print("[Calls] Web socket connected. Sending: \(json).") - webSocket.send(data) + socket?.send(data) print("[Calls] Is initiator: \(room.isInitiator).") if room.isInitiator { - callManager.initiateCall().retainUntilComplete() + callManager.offer().retainUntilComplete() } } - func webSocketDidDisconnect(_ webSocket: WebSocket) { - webSocket.delegate = nil + func handleWebSocketDisconnected() { + socket?.delegate = nil } - func webSocket(_ webSocket: WebSocket, didReceive message: String) { + func handleWebSocketMessage(_ message: String) { print("[Calls] Message received through web socket: \(message).") handle([ message ]) } diff --git a/Session/Calls/CallVCV2.swift b/Session/Calls/CallVCV2.swift index b73538064..177e5e56b 100644 --- a/Session/Calls/CallVCV2.swift +++ b/Session/Calls/CallVCV2.swift @@ -1,12 +1,12 @@ import WebRTC final class CallVCV2 : UIViewController { - let roomID = "37923672515" // NOTE: You need to change this every time to ensure the room isn't full + let roomID = "37923672516" // NOTE: You need to change this every time to ensure the room isn't full var room: RoomInfo? var socket: WebSocket? - lazy var callManager: CallManager = { - let result = CallManager() + lazy var callManager: WebRTCWrapper = { + let result = WebRTCWrapper() result.delegate = self return result }() @@ -85,9 +85,9 @@ final class CallVCV2 : UIViewController { messages.forEach { message in let signalingMessage = SignalingMessage.from(message: message) switch signalingMessage { - case .candidate(let candidate): callManager.handleCandidateMessage(candidate) - case .answer(let answer): callManager.handleRemoteDescription(answer) - case .offer(let offer): callManager.handleRemoteDescription(offer) + case .candidate(let candidate): callManager.handleICECandidate(candidate) + case .answer(let answer): callManager.handleRemoteSDP(answer) + case .offer(let offer): callManager.handleRemoteSDP(offer) default: break } } diff --git a/SessionMessagingKit/Calls/Temp/WebSocket.swift b/SessionMessagingKit/Calls/Temp/WebSocket.swift index 44009db99..29685bb70 100644 --- a/SessionMessagingKit/Calls/Temp/WebSocket.swift +++ b/SessionMessagingKit/Calls/Temp/WebSocket.swift @@ -3,9 +3,9 @@ import SocketRocket public protocol WebSocketDelegate : AnyObject { - func webSocketDidConnect(_ webSocket: WebSocket) - func webSocketDidDisconnect(_ webSocket: WebSocket) - func webSocket(_ webSocket: WebSocket, didReceive message: String) + func handleWebSocketConnected() + func handleWebSocketDisconnected() + func handleWebSocketMessage(_ message: String) } public final class WebSocket : NSObject, SRWebSocketDelegate { @@ -27,17 +27,17 @@ public final class WebSocket : NSObject, SRWebSocketDelegate { } public func webSocketDidOpen(_ webSocket: SRWebSocket!) { - delegate?.webSocketDidConnect(self) + delegate?.handleWebSocketConnected() } public func webSocket(_ webSocket: SRWebSocket!, didReceiveMessage message: Any!) { guard let message = message as? String else { return } - delegate?.webSocket(self, didReceive: message) + delegate?.handleWebSocketMessage(message) } public func disconnect() { socket.close() - delegate?.webSocketDidDisconnect(self) + delegate?.handleWebSocketDisconnected() } public func webSocket(_ webSocket: SRWebSocket!, didFailWithError error: Error!) { diff --git a/SessionMessagingKit/Calls/CallManager+MessageHandling.swift b/SessionMessagingKit/Calls/WebRTCWrapper+MessageHandling.swift similarity index 70% rename from SessionMessagingKit/Calls/CallManager+MessageHandling.swift rename to SessionMessagingKit/Calls/WebRTCWrapper+MessageHandling.swift index e2a2cd811..3eced68bb 100644 --- a/SessionMessagingKit/Calls/CallManager+MessageHandling.swift +++ b/SessionMessagingKit/Calls/WebRTCWrapper+MessageHandling.swift @@ -1,13 +1,13 @@ import WebRTC -extension CallManager { +extension WebRTCWrapper { - public func handleCandidateMessage(_ candidate: RTCIceCandidate) { + public func handleICECandidate(_ candidate: RTCIceCandidate) { print("[Calls] Received ICE candidate message.") candidateQueue.append(candidate) } - public func handleRemoteDescription(_ sdp: RTCSessionDescription) { + public func handleRemoteSDP(_ sdp: RTCSessionDescription) { print("[Calls] Received remote SDP: \(sdp.sdp).") peerConnection.setRemoteDescription(sdp, completionHandler: { [weak self] error in if let error = error { @@ -15,7 +15,8 @@ extension CallManager { } else { guard let self = self, sdp.type == .offer, self.peerConnection.localDescription == nil else { return } - self.acceptCall().retainUntilComplete() + // Answer the call + self.answer().retainUntilComplete() } }) } diff --git a/SessionMessagingKit/Calls/CallManager+UI.swift b/SessionMessagingKit/Calls/WebRTCWrapper+UI.swift similarity index 94% rename from SessionMessagingKit/Calls/CallManager+UI.swift rename to SessionMessagingKit/Calls/WebRTCWrapper+UI.swift index f9d6b73fd..81255a0a2 100644 --- a/SessionMessagingKit/Calls/CallManager+UI.swift +++ b/SessionMessagingKit/Calls/WebRTCWrapper+UI.swift @@ -1,6 +1,6 @@ import WebRTC -extension CallManager { +extension WebRTCWrapper { public func attachLocalRenderer(_ renderer: RTCVideoRenderer) { localVideoTrack.add(renderer) diff --git a/SessionMessagingKit/Calls/CallManager.swift b/SessionMessagingKit/Calls/WebRTCWrapper.swift similarity index 88% rename from SessionMessagingKit/Calls/CallManager.swift rename to SessionMessagingKit/Calls/WebRTCWrapper.swift index 0c447a842..c2a153732 100644 --- a/SessionMessagingKit/Calls/CallManager.swift +++ b/SessionMessagingKit/Calls/WebRTCWrapper.swift @@ -1,16 +1,16 @@ import PromiseKit import WebRTC -public protocol CallManagerDelegate : AnyObject { +public protocol WebRTCWrapperDelegate : AnyObject { var videoCapturer: RTCVideoCapturer { get } func sendSDP(_ sdp: RTCSessionDescription) func sendICECandidate(_ candidate: RTCIceCandidate) } -/// See https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription for more information. -public final class CallManager : NSObject, RTCPeerConnectionDelegate { - public weak var delegate: CallManagerDelegate? +/// See https://webrtc.org/getting-started/overview for more information. +public final class WebRTCWrapper : NSObject, RTCPeerConnectionDelegate { + public weak var delegate: WebRTCWrapperDelegate? internal var candidateQueue: [RTCIceCandidate] = [] internal lazy var factory: RTCPeerConnectionFactory = { @@ -26,26 +26,21 @@ public final class CallManager : NSObject, RTCPeerConnectionDelegate { let configuration = RTCConfiguration() configuration.iceServers = [ RTCIceServer(urlStrings: TestCallConfig.defaultICEServers) ] configuration.sdpSemantics = .unifiedPlan - let pcert = RTCCertificate.generate(withParams: [ "expires": NSNumber(value: 100000), "name": "RSASSA-PKCS1-v1_5" ]) - configuration.certificate = pcert - configuration.iceTransportPolicy = .all - let constraints = RTCMediaConstraints(mandatoryConstraints: [:], optionalConstraints: [ "DtlsSrtpKeyAgreement" : "true" ]) + let constraints = RTCMediaConstraints(mandatoryConstraints: [:], optionalConstraints: [:]) return factory.peerConnection(with: configuration, constraints: constraints, delegate: self) }() - internal lazy var constraints: RTCMediaConstraints = { + internal lazy var mediaConstraints: RTCMediaConstraints = { let mandatory: [String:String] = [ kRTCMediaConstraintsOfferToReceiveAudio : kRTCMediaConstraintsValueTrue, kRTCMediaConstraintsOfferToReceiveVideo : kRTCMediaConstraintsValueTrue ] let optional: [String:String] = [:] - // TODO: Do these constraints make sense? return RTCMediaConstraints(mandatoryConstraints: mandatory, optionalConstraints: optional) }() // Audio internal lazy var audioSource: RTCAudioSource = { - // TODO: Do these constraints make sense? let constraints = RTCMediaConstraints(mandatoryConstraints: [:], optionalConstraints: [:]) return factory.audioSource(with: constraints) }() @@ -106,13 +101,13 @@ public final class CallManager : NSObject, RTCPeerConnectionDelegate { } // MARK: Call Management - public func initiateCall() -> Promise { + public func offer() -> Promise { print("[Calls] Initiating call.") /* guard let thread = TSContactThread.fetch(for: publicKey, using: transaction) else { return Promise(error: Error.noThread) } */ let (promise, seal) = Promise.pending() - peerConnection.offer(for: constraints) { [weak self] sdp, error in + peerConnection.offer(for: mediaConstraints) { [weak self] sdp, error in if let error = error { seal.reject(error) } else { @@ -138,13 +133,13 @@ public final class CallManager : NSObject, RTCPeerConnectionDelegate { return promise } - public func acceptCall() -> Promise { + public func answer() -> Promise { print("[Calls] Accepting call.") /* guard let thread = TSContactThread.fetch(for: publicKey, using: transaction) else { return Promise(error: Error.noThread) } */ let (promise, seal) = Promise.pending() - peerConnection.answer(for: constraints) { [weak self] sdp, error in + peerConnection.answer(for: mediaConstraints) { [weak self] sdp, error in if let error = error { seal.reject(error) } else { @@ -170,7 +165,7 @@ public final class CallManager : NSObject, RTCPeerConnectionDelegate { return promise } - public func endCall() { + public func dropConnection() { peerConnection.close() }