86 lines
2.7 KiB
Swift
86 lines
2.7 KiB
Swift
//
|
|
// InvitationObserverService.swift
|
|
// TUIRoomKit
|
|
//
|
|
// Created by jeremiawang on 2024/8/23.
|
|
//
|
|
|
|
import Foundation
|
|
import RTCRoomEngine
|
|
import Factory
|
|
|
|
class InvitationObserverService: NSObject {
|
|
static let shared = InvitationObserverService()
|
|
private var invitationWindow: UIWindow?
|
|
|
|
private override init() {
|
|
}
|
|
|
|
func showInvitationWindow(roomInfo: TUIRoomInfo, invitation: TUIInvitation) {
|
|
DispatchQueue.main.async {
|
|
let invitationViewController = ConferenceInvitationViewController(roomInfo: roomInfo, invitation: invitation)
|
|
self.invitationWindow = UIWindow()
|
|
self.invitationWindow?.windowLevel = .alert + 1
|
|
self.invitationWindow?.rootViewController = invitationViewController
|
|
self.invitationWindow?.isHidden = false
|
|
self.invitationWindow?.t_makeKeyAndVisible()
|
|
}
|
|
}
|
|
|
|
func dismissInvitationWindow() {
|
|
DispatchQueue.main.async {
|
|
self.invitationWindow?.isHidden = true
|
|
self.invitationWindow = nil
|
|
}
|
|
}
|
|
}
|
|
|
|
extension InvitationObserverService: TUIConferenceInvitationObserver {
|
|
func onReceiveInvitation(roomInfo: TUIRoomInfo, invitation: TUIInvitation, extensionInfo: String) {
|
|
let store = Container.shared.conferenceStore()
|
|
store.dispatch(action: ConferenceInvitationActions.onReceiveInvitation(payload: (roomInfo, invitation)))
|
|
}
|
|
|
|
func onInvitationHandledByOtherDevice(roomInfo: TUIRoomInfo, accepted: Bool) {
|
|
}
|
|
|
|
func onInvitationCancelled(roomInfo: TUIRoomInfo, invitation: TUIInvitation) {
|
|
}
|
|
|
|
func onInvitationAccepted(roomInfo: TUIRoomInfo, invitation: TUIInvitation) {
|
|
}
|
|
|
|
func onInvitationRejected(roomInfo: TUIRoomInfo, invitation: TUIInvitation, reason: TUIInvitationRejectedReason) {
|
|
}
|
|
|
|
func onInvitationTimeout(roomInfo: TUIRoomInfo, invitation: TUIInvitation) {
|
|
}
|
|
|
|
func onInvitationRevokedByAdmin(roomInfo: TUIRoomInfo, invitation: TUIInvitation, admin: TUIUserInfo) {
|
|
}
|
|
|
|
func onInvitationAdded(roomId: String, invitation: TUIInvitation) {
|
|
}
|
|
|
|
func onInvitationRemoved(roomId: String, invitation: TUIInvitation) {
|
|
}
|
|
|
|
func onInvitationStatusChanged(roomId: String, invitation: TUIInvitation) {
|
|
}
|
|
}
|
|
|
|
extension UIWindow {
|
|
public func t_makeKeyAndVisible() {
|
|
if #available(iOS 13.0, *) {
|
|
for windowScene in UIApplication.shared.connectedScenes {
|
|
if windowScene.activationState == UIScene.ActivationState.foregroundActive ||
|
|
windowScene.activationState == UIScene.ActivationState.background {
|
|
self.windowScene = windowScene as? UIWindowScene
|
|
break
|
|
}
|
|
}
|
|
}
|
|
self.makeKeyAndVisible()
|
|
}
|
|
}
|