69 lines
3.0 KiB
Swift
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()
|
|
}
|
|
}
|