MoreFunctionViewModel.swift 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. //
  2. // MoreFunctionViewModel.swift
  3. // TUIRoomKit
  4. //
  5. // Created by janejntang on 2023/1/12.
  6. // Copyright © 2023 Tencent. All rights reserved.
  7. //
  8. import Foundation
  9. import TUICore
  10. class MoreFunctionViewModel {
  11. private(set) var viewItems: [ButtonItemData] = []
  12. var engineManager: EngineManager {
  13. return EngineManager.shared
  14. }
  15. var engineEventCenter: EngineEventCenter {
  16. return EngineEventCenter.shared
  17. }
  18. init() {
  19. createBottomData()
  20. }
  21. func createBottomData() {
  22. if hasTUIChatItem() {
  23. let chatItem = ButtonItemData()
  24. chatItem.normalIcon = "room_chat"
  25. chatItem.normalTitle = .chatText
  26. chatItem.resourceBundle = tuiRoomKitBundle()
  27. chatItem.action = { [weak self] sender in
  28. guard let self = self, let button = sender as? UIButton else { return }
  29. self.chatAction(sender: button)
  30. }
  31. viewItems.append(chatItem)
  32. }
  33. let settingItem = ButtonItemData()
  34. settingItem.normalIcon = "room_setting"
  35. settingItem.normalTitle = .settingText
  36. settingItem.resourceBundle = tuiRoomKitBundle()
  37. settingItem.action = { [weak self] sender in
  38. guard let self = self, let button = sender as? UIButton else { return }
  39. self.settingAction(sender: button)
  40. }
  41. viewItems.append(settingItem)
  42. }
  43. private func hasTUIChatItem() -> Bool {
  44. return TUICore.getService(TUICore_TUIChatService) != nil
  45. }
  46. func settingAction(sender: UIButton) {
  47. sender.isSelected = !sender.isSelected
  48. RoomRouter.shared.presentPopUpViewController(viewType: .mediaSettingViewType, height: 300.scale375())
  49. }
  50. func chatAction(sender: UIButton) {
  51. RoomRouter.shared.dismissPopupViewController()
  52. let user = engineManager.store.currentUser
  53. let roomInfo = engineManager.store.roomInfo
  54. RoomRouter.shared.pushToChatController(user: user, roomInfo: roomInfo)
  55. }
  56. deinit {
  57. debugPrint("deinit \(self)")
  58. }
  59. }
  60. private extension String {
  61. static var settingText: String {
  62. localized("Settings")
  63. }
  64. static var chatText: String {
  65. localized("Chat")
  66. }
  67. }