Add ringing UI
This commit is contained in:
parent
8280748b39
commit
baf9e4e9d4
|
@ -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)
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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] = []
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue