diff --git a/Session/Calls/CallVC.swift b/Session/Calls/CallVC.swift index 197aef925..696e6bcc8 100644 --- a/Session/Calls/CallVC.swift +++ b/Session/Calls/CallVC.swift @@ -19,6 +19,12 @@ final class CallVC : UIViewController, WebRTCSessionDelegate { }() // MARK: UI Components + private lazy var remoteVideoView: RTCMTLVideoView = { + let result = RTCMTLVideoView() + result.contentMode = .scaleAspectFill + return result + }() + private lazy var fadeView: UIView = { let result = UIView() let height: CGFloat = 64 @@ -100,8 +106,6 @@ final class CallVC : UIViewController, WebRTCSessionDelegate { func setUpViewHierarchy() { // Remote video view - let remoteVideoView = RTCMTLVideoView() - remoteVideoView.contentMode = .scaleAspectFill webRTCSession.attachRemoteRenderer(remoteVideoView) view.addSubview(remoteVideoView) remoteVideoView.translatesAutoresizingMaskIntoConstraints = false @@ -148,9 +152,11 @@ final class CallVC : UIViewController, WebRTCSessionDelegate { // MARK: Interaction func handleEndCallMessage(_ message: CallMessage) { + print("[Calls] Ending call.") WebRTCSession.current?.dropConnection() WebRTCSession.current = nil UIView.animate(withDuration: 0.25) { + self.remoteVideoView.alpha = 0 self.callEndedLabel.alpha = 1 } Timer.scheduledTimer(withTimeInterval: 2, repeats: false) { _ in diff --git a/SessionMessagingKit/Calls/WebRTCSession.swift b/SessionMessagingKit/Calls/WebRTCSession.swift index 401991e96..71893f67b 100644 --- a/SessionMessagingKit/Calls/WebRTCSession.swift +++ b/SessionMessagingKit/Calls/WebRTCSession.swift @@ -194,6 +194,7 @@ public final class WebRTCSession : NSObject, RTCPeerConnectionDelegate { guard let thread = TSContactThread.fetch(for: sessionID, using: transaction) else { return } let message = CallMessage() message.kind = .endCall + print("[Calls] Sending end call message.") MessageSender.sendNonDurably(message, in: thread, using: transaction).retainUntilComplete() dropConnection() WebRTCSession.current = nil diff --git a/SessionMessagingKit/Messages/Control Messages/CallMessage.swift b/SessionMessagingKit/Messages/Control Messages/CallMessage.swift index ac566c14c..eba440598 100644 --- a/SessionMessagingKit/Messages/Control Messages/CallMessage.swift +++ b/SessionMessagingKit/Messages/Control Messages/CallMessage.swift @@ -40,7 +40,6 @@ public final class CallMessage : ControlMessage { // MARK: Validation public override var isValid: Bool { guard super.isValid else { return false } - guard let sdps = sdps, !sdps.isEmpty else { return false } return kind != nil } @@ -97,7 +96,7 @@ public final class CallMessage : ControlMessage { } public override func toProto(using transaction: YapDatabaseReadWriteTransaction) -> SNProtoContent? { - guard let kind = kind, let sdps = sdps, !sdps.isEmpty else { + guard let kind = kind else { SNLog("Couldn't construct call message proto from: \(self).") return nil } @@ -110,7 +109,9 @@ public final class CallMessage : ControlMessage { case .endCall: type = .endCall } let callMessageProto = SNProtoCallMessage.builder(type: type) - callMessageProto.setSdps(sdps) + if let sdps = sdps, !sdps.isEmpty { + callMessageProto.setSdps(sdps) + } if case let .iceCandidates(sdpMLineIndexes, sdpMids) = kind { callMessageProto.setSdpMlineIndexes(sdpMLineIndexes) callMessageProto.setSdpMids(sdpMids) diff --git a/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift b/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift index 8cd74e633..8dcdbdd7e 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift @@ -289,7 +289,9 @@ extension MessageReceiver { candidates.append(candidate) } getWebRTCSession().handleICECandidates(candidates) - case .endCall: handleEndCallMessage?(message) + case .endCall: + print("[Calls] Received end call message.") + handleEndCallMessage?(message) } }