ConferenceMainViewController.swift 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. //
  2. // ConferenceMainViewController.swift
  3. // TUIRoomKit
  4. //
  5. // Created by janejntang on 2024/3/6.
  6. //
  7. import UIKit
  8. import Combine
  9. import Factory
  10. import TUICore
  11. @objcMembers public class ConferenceMainViewController: UIViewController {
  12. private var cancellableSet = Set<AnyCancellable>()
  13. private var viewModel: ConferenceMainViewModel = ConferenceMainViewModel()
  14. public override var shouldAutorotate: Bool {
  15. return true
  16. }
  17. public override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
  18. return .allButUpsideDown
  19. }
  20. public override func loadView() {
  21. self.view = ConferenceMainView(viewModel: viewModel, viewFactory: viewModel)
  22. }
  23. public override func viewDidLoad() {
  24. super.viewDidLoad()
  25. RoomRouter.shared.initializeNavigationController(rootViewController: self)
  26. RoomVideoFloatView.dismiss()
  27. viewModel.onViewDidLoadAction()
  28. subscribeToast()
  29. }
  30. public override func viewWillAppear(_ animated: Bool) {
  31. super.viewWillAppear(animated)
  32. navigationController?.setNavigationBarHidden(true, animated: false)
  33. UIApplication.shared.isIdleTimerDisabled = true
  34. }
  35. public override func viewWillDisappear(_ animated: Bool) {
  36. super.viewWillDisappear(animated)
  37. navigationController?.setNavigationBarHidden(false, animated: false)
  38. }
  39. public override func viewDidDisappear(_ animated: Bool) {
  40. super.viewDidDisappear(animated)
  41. viewStore.updateInternalCreation(isInternalCreation: false)
  42. }
  43. func quickStartConference() {
  44. viewModel.quickStartConference()
  45. }
  46. func joinConference() {
  47. viewModel.joinConference()
  48. }
  49. public func setStartConferenceParams(params: StartConferenceParams) {
  50. viewModel.setStartConferenceParams(params: params)
  51. }
  52. public func setJoinConferenceParams(params: JoinConferenceParams) {
  53. viewModel.setJoinConferenceParams(params: params)
  54. }
  55. var startConferenceParams: StartConferenceParams? {
  56. get {
  57. return viewModel.startConferenceParams
  58. }
  59. }
  60. var joinConferenceParams: JoinConferenceParams? {
  61. get {
  62. return viewModel.joinConferenceParams
  63. }
  64. }
  65. @Injected(\.conferenceMainViewStore) private var viewStore
  66. @Injected(\.conferenceStore) var operation: ConferenceStore
  67. deinit {
  68. debugPrint("deinit \(self)")
  69. }
  70. }
  71. extension ConferenceMainViewController {
  72. private func subscribeToast() {
  73. operation.toastSubject
  74. .receive(on: DispatchQueue.main)
  75. .sink { [weak self] toast in
  76. guard let self = self else { return }
  77. var position = TUICSToastPositionBottom
  78. switch toast.position {
  79. case .center:
  80. position = TUICSToastPositionCenter
  81. default:
  82. break
  83. }
  84. self.view.makeToast(toast.message, duration: toast.duration, position: position)
  85. }
  86. .store(in: &cancellableSet)
  87. }
  88. }