mirror of https://github.com/oxen-io/session-ios
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.0 KiB
Swift
66 lines
2.0 KiB
Swift
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
|
|
|
|
import UIKit
|
|
import GRDB
|
|
import SessionUtilitiesKit
|
|
|
|
extension SessionCallManager {
|
|
@discardableResult
|
|
public func startCallAction() -> Bool {
|
|
guard let call: CurrentCallProtocol = self.currentCall else { return false }
|
|
|
|
Storage.shared.writeAsync { db in
|
|
call.startSessionCall(db)
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
public func answerCallAction() {
|
|
guard let call: SessionCall = (self.currentCall as? SessionCall) else { return }
|
|
|
|
if Singleton.hasAppContext, Singleton.appContext.frontmostViewController is CallVC {
|
|
call.answerSessionCall()
|
|
}
|
|
else {
|
|
guard Singleton.hasAppContext, let presentingVC = Singleton.appContext.frontmostViewController else { return } // FIXME: Handle more gracefully
|
|
|
|
let callVC = CallVC(for: call)
|
|
if let conversationVC = presentingVC as? ConversationVC {
|
|
callVC.conversationVC = conversationVC
|
|
conversationVC.resignFirstResponder()
|
|
conversationVC.hideInputAccessoryView()
|
|
}
|
|
|
|
presentingVC.present(callVC, animated: true) {
|
|
call.answerSessionCall()
|
|
}
|
|
}
|
|
}
|
|
|
|
@discardableResult
|
|
public func endCallAction() -> Bool {
|
|
guard let call: SessionCall = (self.currentCall as? SessionCall) else { return false }
|
|
|
|
call.endSessionCall()
|
|
|
|
if call.didTimeout {
|
|
reportCurrentCallEnded(reason: .unanswered)
|
|
}
|
|
else {
|
|
reportCurrentCallEnded(reason: nil)
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
@discardableResult
|
|
public func setMutedCallAction(isMuted: Bool) -> Bool {
|
|
guard let call: SessionCall = (self.currentCall as? SessionCall) else { return false }
|
|
|
|
call.isMuted = isMuted
|
|
|
|
return true
|
|
}
|
|
}
|