Files
featherVoice/TUIKit/TUIRoomKit/RoomExtension/Model/TUIRoomImAccessService.swift
2025-08-08 10:49:36 +08:00

69 lines
3.0 KiB
Swift

//
// TUIRoomImAccessService.swift
// TUIRoomKit
//
// Created by janejntang on 2023/6/2.
//
import Foundation
import TUICore
class TUIRoomImAccessService: NSObject, TUIServiceProtocol {
static let shared = TUIRoomImAccessService()
var isShownInvitedToJoinRoomView: Bool = false
weak var inviteViewController: UIViewController?
var inviteWindow: UIWindow?
private override init() {
super.init()
initRoomMessage()
initSignalingListener()
initThemeResource()
}
func initRoomMessage() {
TUICore.callService(TUICore_TUIChatService, method: TUICore_TUIChatService_AppendCustomMessageMethod, param:
[BussinessID: BussinessID_GroupRoomMessage, TMessageCell_Name: "RoomMessageBubbleCell",
TMessageCell_Data_Name:"RoomMessageBubbleCellData",])
}
func initSignalingListener() {
V2TIMManager.sharedInstance().addSignalingListener(listener: self)
}
func initThemeResource() {
TUICoreThemeConvert.initThemeResource()
}
}
extension TUIRoomImAccessService: V2TIMSignalingListener {
func onReceiveNewInvitation(_ inviteID: String, inviter: String, groupID: String, inviteeList: [String], data: String?) {
guard let data = data else { return }
let dict = data.convertToDic()
guard let businessID = dict?["businessID"] as? String else { return }
guard businessID == "ROOM_INVITE_ACTION" else { return }
guard let roomId = dict?["roomId"] as? String else { return }
guard let userId = TUILogin.getUserID() else { return }
let dataDic = dict?["data"] as? NSDictionary ?? [:]
let inviter = dataDic["inviter"] as? NSDictionary ?? [:]
let avatarUrl = inviter["avatarUrl"] as? String ?? ""
let inviterUserName = inviter["userName"] as? String ?? ""
guard inviteeList.contains(userId) else { return }
let businessScene = TUILogin.getCurrentBusinessScene()
guard businessScene == .None || businessScene == .InMeetingRoom else { return }
showInvitedToJoinRoomView(inviterUserName: inviterUserName, inviteUserAvatarUrl: avatarUrl, roomId: roomId)
}
private func showInvitedToJoinRoomView(inviterUserName: String, inviteUserAvatarUrl: String, roomId: String) {
if isShownInvitedToJoinRoomView {
return
}
isShownInvitedToJoinRoomView = true
let inviteViewController = InvitedToJoinRoomViewController(inviteUserName: inviterUserName,inviteUserAvatarUrl:
inviteUserAvatarUrl, roomId: roomId)
let nav = UINavigationController(rootViewController: inviteViewController)
nav.setNavigationBarHidden(true, animated: true)
inviteWindow = UIWindow(frame: UIScreen.main.bounds)
inviteWindow?.windowLevel = .alert - 1
guard let inviteWindow = inviteWindow else { return }
inviteWindow.rootViewController = nav
inviteWindow.isHidden = false
inviteWindow.makeKeyAndVisible()
}
}