提交
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
//
|
||||
// InviteToJoinRoomManager.swift
|
||||
// TUIRoomKit
|
||||
//
|
||||
// Created by janejntang on 2023/7/3.
|
||||
// You can choose to invite members and send invitations.
|
||||
|
||||
import Foundation
|
||||
import RTCRoomEngine
|
||||
import TUICore
|
||||
|
||||
class InviteToJoinRoomManager {
|
||||
class func startInviteToJoinRoom(message: RoomMessageModel, inviter: TUILoginUserInfo) {
|
||||
let inviteJoinModel = InviteJoinModel(message: message, inviter: inviter)
|
||||
pushSelectGroupMemberViewController(groupId: message.groupId) { responseData in
|
||||
guard let modelList =
|
||||
responseData[TUICore_TUIGroupObjectFactory_SelectGroupMemberVC_ResultUserList] as? [TUIUserModel]
|
||||
else { return }
|
||||
var invitedList: [String] = []
|
||||
for userModel in modelList {
|
||||
invitedList.append(userModel.userId)
|
||||
}
|
||||
inviteToJoinRoom(inviteJoinModel: inviteJoinModel, invitedList: invitedList)
|
||||
}
|
||||
}
|
||||
|
||||
class func pushSelectGroupMemberViewController(groupId: String, callback: @escaping TUIValueResultCallback) {
|
||||
let param = [TUICore_TUIGroupObjectFactory_SelectGroupMemberVC_GroupID: groupId]
|
||||
if let navigateController = RoomMessageManager.shared.navigateController {
|
||||
navigateController.push(TUICore_TUIGroupObjectFactory_SelectGroupMemberVC_Classic, param: param) { responseData in
|
||||
callback(responseData)
|
||||
}
|
||||
} else {
|
||||
let nav = UINavigationController()
|
||||
let currentViewController = getCurrentWindowViewController()
|
||||
currentViewController?.present(TUICore_TUIGroupObjectFactory_SelectGroupMemberVC_Classic,
|
||||
param: param, embbedIn: nav,
|
||||
forResult: { responseData in
|
||||
callback(responseData)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
class func inviteToJoinRoom(inviteJoinModel: InviteJoinModel, invitedList: [String]) {
|
||||
guard invitedList.count > 0 else { return }
|
||||
let dataDict = inviteJoinModel.getDicFromInviteJoinModel(inviteJoinModel: inviteJoinModel)
|
||||
guard let dataString = dataDict.convertToString() else { return }
|
||||
let pushInfo = V2TIMOfflinePushInfo()
|
||||
invitedList.forEach { userId in
|
||||
V2TIMManager.sharedInstance().invite(userId,
|
||||
data: dataString,
|
||||
onlineUserOnly: true,
|
||||
offlinePushInfo: pushInfo,
|
||||
timeout: 60) {
|
||||
debugPrint("invite,success")
|
||||
} fail: { code, message in
|
||||
debugPrint("invite,code:\(code),message:\(String(describing: message))")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class private func getCurrentWindowViewController() -> UIViewController? {
|
||||
var keyWindow: UIWindow?
|
||||
for window in UIApplication.shared.windows {
|
||||
if window.isMember(of: UIWindow.self), window.isKeyWindow {
|
||||
keyWindow = window
|
||||
break
|
||||
}
|
||||
}
|
||||
guard let rootController = keyWindow?.rootViewController else {
|
||||
return nil
|
||||
}
|
||||
func findCurrentController(from vc: UIViewController?) -> UIViewController? {
|
||||
if let nav = vc as? UINavigationController {
|
||||
return findCurrentController(from: nav.topViewController)
|
||||
} else if let tabBar = vc as? UITabBarController {
|
||||
return findCurrentController(from: tabBar.selectedViewController)
|
||||
} else if let presented = vc?.presentedViewController {
|
||||
return findCurrentController(from: presented)
|
||||
}
|
||||
return vc
|
||||
}
|
||||
let viewController = findCurrentController(from: rootController)
|
||||
return viewController
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user