84 lines
3.2 KiB
Swift
84 lines
3.2 KiB
Swift
|
|
//
|
||
|
|
// TransferMasterViewModel.swift
|
||
|
|
// TUIRoomKit
|
||
|
|
//
|
||
|
|
// Created by janejntang on 2023/2/20.
|
||
|
|
//
|
||
|
|
|
||
|
|
import Foundation
|
||
|
|
|
||
|
|
protocol TransferMasterViewResponder: NSObject {
|
||
|
|
func reloadTransferMasterTableView()
|
||
|
|
func searchControllerChangeActive(isActive: Bool)
|
||
|
|
func makeToast(message: String)
|
||
|
|
}
|
||
|
|
|
||
|
|
class TransferMasterViewModel: NSObject {
|
||
|
|
var attendeeList: [UserEntity] = []
|
||
|
|
var userId: String = ""
|
||
|
|
weak var viewResponder: TransferMasterViewResponder? = nil
|
||
|
|
var engineManager: EngineManager {
|
||
|
|
EngineManager.shared
|
||
|
|
}
|
||
|
|
let roomRouter: RoomRouter = RoomRouter.shared
|
||
|
|
override init() {
|
||
|
|
super.init()
|
||
|
|
attendeeList = self.engineManager.store.attendeeList.filter({ [weak self] userModel in
|
||
|
|
guard let self = self else { return true }
|
||
|
|
return userModel.userId != self.engineManager.store.currentUser.userId
|
||
|
|
})
|
||
|
|
EngineEventCenter.shared.subscribeUIEvent(key: .TUIRoomKitService_RenewUserList, responder: self)
|
||
|
|
}
|
||
|
|
|
||
|
|
func appointMasterAction(sender: UIButton) {
|
||
|
|
guard userId != "" else { return }
|
||
|
|
engineManager.changeUserRole(userId: userId, role: .roomOwner) { [weak self] in
|
||
|
|
guard let self = self else { return }
|
||
|
|
self.engineManager.exitRoom {
|
||
|
|
EngineEventCenter.shared.notifyUIEvent(key: .TUIRoomKitService_DismissConferenceViewController, param: [:])
|
||
|
|
} onError: { [weak self] code, message in
|
||
|
|
guard let self = self else { return }
|
||
|
|
self.viewResponder?.makeToast(message: message)
|
||
|
|
EngineEventCenter.shared.notifyUIEvent(key: .TUIRoomKitService_DismissConferenceViewController, param: [:])
|
||
|
|
}
|
||
|
|
} onError: { [weak self] code, message in
|
||
|
|
guard let self = self else { return }
|
||
|
|
self.viewResponder?.makeToast(message: message)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
deinit {
|
||
|
|
EngineEventCenter.shared.unsubscribeUIEvent(key: .TUIRoomKitService_RenewUserList, responder: self)
|
||
|
|
debugPrint("deinit \(self)")
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
extension TransferMasterViewModel: PopUpViewModelResponder {
|
||
|
|
func updateViewOrientation(isLandscape: Bool) {
|
||
|
|
viewResponder?.searchControllerChangeActive(isActive: false)
|
||
|
|
attendeeList = engineManager.store.attendeeList.filter({ [weak self] userModel in
|
||
|
|
guard let self = self else { return true }
|
||
|
|
return userModel.userId != self.engineManager.store.currentUser.userId
|
||
|
|
})
|
||
|
|
viewResponder?.reloadTransferMasterTableView()
|
||
|
|
}
|
||
|
|
|
||
|
|
func searchControllerChangeActive(isActive: Bool) {
|
||
|
|
viewResponder?.searchControllerChangeActive(isActive: isActive)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
extension TransferMasterViewModel: RoomKitUIEventResponder {
|
||
|
|
func onNotifyUIEvent(key: EngineEventCenter.RoomUIEvent, Object: Any?, info: [AnyHashable : Any]?) {
|
||
|
|
switch key {
|
||
|
|
case .TUIRoomKitService_RenewUserList:
|
||
|
|
attendeeList = engineManager.store.attendeeList.filter({ [weak self] userModel in
|
||
|
|
guard let self = self else { return true }
|
||
|
|
return userModel.userId != self.engineManager.store.currentUser.userId
|
||
|
|
})
|
||
|
|
viewResponder?.reloadTransferMasterTableView()
|
||
|
|
default: break
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|