TransferMasterViewModel.swift 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. //
  2. // TransferMasterViewModel.swift
  3. // TUIRoomKit
  4. //
  5. // Created by janejntang on 2023/2/20.
  6. //
  7. import Foundation
  8. protocol TransferMasterViewResponder: NSObject {
  9. func reloadTransferMasterTableView()
  10. func searchControllerChangeActive(isActive: Bool)
  11. func makeToast(message: String)
  12. }
  13. class TransferMasterViewModel: NSObject {
  14. var attendeeList: [UserEntity] = []
  15. var userId: String = ""
  16. weak var viewResponder: TransferMasterViewResponder? = nil
  17. var engineManager: EngineManager {
  18. EngineManager.shared
  19. }
  20. let roomRouter: RoomRouter = RoomRouter.shared
  21. override init() {
  22. super.init()
  23. attendeeList = self.engineManager.store.attendeeList.filter({ [weak self] userModel in
  24. guard let self = self else { return true }
  25. return userModel.userId != self.engineManager.store.currentUser.userId
  26. })
  27. EngineEventCenter.shared.subscribeUIEvent(key: .TUIRoomKitService_RenewUserList, responder: self)
  28. }
  29. func appointMasterAction(sender: UIButton) {
  30. guard userId != "" else { return }
  31. engineManager.changeUserRole(userId: userId, role: .roomOwner) { [weak self] in
  32. guard let self = self else { return }
  33. self.engineManager.exitRoom()
  34. EngineEventCenter.shared.notifyUIEvent(key: .TUIRoomKitService_DismissConferenceViewController, param: [:])
  35. } onError: { [weak self] code, message in
  36. guard let self = self else { return }
  37. self.viewResponder?.makeToast(message: message)
  38. }
  39. }
  40. deinit {
  41. EngineEventCenter.shared.unsubscribeUIEvent(key: .TUIRoomKitService_RenewUserList, responder: self)
  42. debugPrint("deinit \(self)")
  43. }
  44. }
  45. extension TransferMasterViewModel: PopUpViewModelResponder {
  46. func updateViewOrientation(isLandscape: Bool) {
  47. viewResponder?.searchControllerChangeActive(isActive: false)
  48. attendeeList = engineManager.store.attendeeList.filter({ [weak self] userModel in
  49. guard let self = self else { return true }
  50. return userModel.userId != self.engineManager.store.currentUser.userId
  51. })
  52. viewResponder?.reloadTransferMasterTableView()
  53. }
  54. func searchControllerChangeActive(isActive: Bool) {
  55. viewResponder?.searchControllerChangeActive(isActive: isActive)
  56. }
  57. }
  58. extension TransferMasterViewModel: RoomKitUIEventResponder {
  59. func onNotifyUIEvent(key: EngineEventCenter.RoomUIEvent, Object: Any?, info: [AnyHashable : Any]?) {
  60. switch key {
  61. case .TUIRoomKitService_RenewUserList:
  62. attendeeList = engineManager.store.attendeeList.filter({ [weak self] userModel in
  63. guard let self = self else { return true }
  64. return userModel.userId != self.engineManager.store.currentUser.userId
  65. })
  66. viewResponder?.reloadTransferMasterTableView()
  67. default: break
  68. }
  69. }
  70. }