diff --git a/Session/Calls/CallVC.swift b/Session/Calls/CallVC.swift index 696e6bcc8..e967182a4 100644 --- a/Session/Calls/CallVC.swift +++ b/Session/Calls/CallVC.swift @@ -56,12 +56,11 @@ final class CallVC : UIViewController, WebRTCSessionDelegate { return result }() - private lazy var callEndedLabel: UILabel = { + private lazy var callInfoLabel: UILabel = { let result = UILabel() result.textColor = .white result.font = .boldSystemFont(ofSize: Values.veryLargeFontSize) result.textAlignment = .center - result.text = "Call Ended" result.alpha = 0 return result }() @@ -96,6 +95,8 @@ final class CallVC : UIViewController, WebRTCSessionDelegate { } titleLabel.text = contact?.displayName(for: Contact.Context.regular) ?? sessionID if case .offer = mode { + callInfoLabel.alpha = 1 + callInfoLabel.text = "Ringing..." Storage.write { transaction in self.webRTCSession.sendOffer(to: self.sessionID, using: transaction).retainUntilComplete() } @@ -129,15 +130,15 @@ final class CallVC : UIViewController, WebRTCSessionDelegate { closeButton.translatesAutoresizingMaskIntoConstraints = false closeButton.pin(.left, to: .left, of: view) closeButton.pin(.top, to: .top, of: view, withInset: 32) - // Title view + // Title label view.addSubview(titleLabel) titleLabel.translatesAutoresizingMaskIntoConstraints = false titleLabel.center(.vertical, in: closeButton) titleLabel.center(.horizontal, in: view) - // Call ended label - view.addSubview(callEndedLabel) - callEndedLabel.translatesAutoresizingMaskIntoConstraints = false - callEndedLabel.center(in: view) + // Call info label + view.addSubview(callInfoLabel) + callInfoLabel.translatesAutoresizingMaskIntoConstraints = false + callInfoLabel.center(in: view) } override func viewDidAppear(_ animated: Bool) { @@ -151,13 +152,20 @@ final class CallVC : UIViewController, WebRTCSessionDelegate { } // MARK: Interaction + func handleAnswerMessage(_ message: CallMessage) { + UIView.animate(withDuration: 0.25) { + self.callInfoLabel.alpha = 0 + } + } + func handleEndCallMessage(_ message: CallMessage) { print("[Calls] Ending call.") + callInfoLabel.text = "Call Ended" WebRTCSession.current?.dropConnection() WebRTCSession.current = nil UIView.animate(withDuration: 0.25) { self.remoteVideoView.alpha = 0 - self.callEndedLabel.alpha = 1 + self.callInfoLabel.alpha = 1 } Timer.scheduledTimer(withTimeInterval: 2, repeats: false) { _ in self.presentingViewController?.dismiss(animated: true, completion: nil) diff --git a/Session/Meta/AppDelegate.swift b/Session/Meta/AppDelegate.swift index 63303881c..48fc38f4a 100644 --- a/Session/Meta/AppDelegate.swift +++ b/Session/Meta/AppDelegate.swift @@ -25,6 +25,13 @@ extension AppDelegate { presentingVC.present(alert, animated: true, completion: nil) } } + // Answer messages + MessageReceiver.handleAnswerCallMessage = { message in + DispatchQueue.main.async { + guard let callVC = CurrentAppContext().frontmostViewController() as? CallVC else { return } + callVC.handleAnswerMessage(message) + } + } // End call messages MessageReceiver.handleEndCallMessage = { message in DispatchQueue.main.async { diff --git a/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift b/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift index 8dcdbdd7e..6e3eb1c4c 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift @@ -277,6 +277,7 @@ extension MessageReceiver { print("[Calls] Received answer message.") let sdp = RTCSessionDescription(type: .answer, sdp: message.sdps![0]) getWebRTCSession().handleRemoteSDP(sdp, from: message.sender!) + handleAnswerCallMessage?(message) case .provisionalAnswer: break // TODO: Implement case let .iceCandidates(sdpMLineIndexes, sdpMids): var candidates: [RTCIceCandidate] = [] diff --git a/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift b/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift index 26a809089..b2cc26bc4 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift @@ -3,6 +3,7 @@ import SessionUtilitiesKit public enum MessageReceiver { private static var lastEncryptionKeyPairRequest: [String:Date] = [:] public static var handleOfferCallMessage: ((CallMessage) -> Void)? + public static var handleAnswerCallMessage: ((CallMessage) -> Void)? public static var handleEndCallMessage: ((CallMessage) -> Void)? public enum Error : LocalizedError {