87 lines
3.6 KiB
Swift
87 lines
3.6 KiB
Swift
//
|
|
// RoomMessageExtensionObserver.swift
|
|
// TUIRoomKit
|
|
//
|
|
// Created by janejntang on 2023/6/2.
|
|
//
|
|
|
|
import Foundation
|
|
import TUICore
|
|
import TIMCommon
|
|
|
|
class RoomMessageExtensionObserver: NSObject {
|
|
static let shared = RoomMessageExtensionObserver()
|
|
let roomMessageManager: RoomMessageManager = RoomMessageManager.shared
|
|
var settingMenuNavigationController: UINavigationController?
|
|
private override init() {
|
|
super.init()
|
|
}
|
|
@objc private func pushChatExtensionRoomSettingsViewController() {
|
|
if let nav = settingMenuNavigationController {
|
|
let vc = ChatExtensionRoomSettingsViewController(isOpenMicrophone: EngineManager.shared.store.isOpenMicrophone,
|
|
isOpenCamera: EngineManager.shared.store.isOpenCamera)
|
|
nav.pushViewController(vc, animated: true)
|
|
}
|
|
}
|
|
deinit {
|
|
debugPrint("deinit \(self)")
|
|
}
|
|
}
|
|
extension RoomMessageExtensionObserver: TUIExtensionProtocol {
|
|
func onGetExtension(_ key: String, param: [AnyHashable : Any]?) -> [TUIExtensionInfo]? {
|
|
if key == TUICore_TUIChatExtension_InputViewMoreItem_ClassicExtensionID {
|
|
guard let groupID = param?[TUICore_TUIChatExtension_InputViewMoreItem_GroupID] as? String, groupID != "" else { return nil }
|
|
guard let isNeedRoom = param?[TUICore_TUIChatExtension_InputViewMoreItem_FilterRoom] as? Bool, !isNeedRoom else { return nil }
|
|
let info = TUIExtensionInfo()
|
|
info.weight = 200
|
|
info.text = .meetingText
|
|
let defaultImage = UIImage(named: "room_quick_meeting", in: tuiRoomKitBundle(), compatibleWith: nil) ?? UIImage()
|
|
info.icon = TUICoreThemeConvert.getTUIDynamicImage(imageKey: "room_quick_meeting_image", defaultImage: defaultImage)
|
|
info.onClicked = { [weak self] param in
|
|
guard let self = self else { return }
|
|
if let vc = param[TUICore_TUIChatExtension_InputViewMoreItem_PushVC] as? UINavigationController {
|
|
self.roomMessageManager.navigateController = vc
|
|
}
|
|
if let groupId = param[TUICore_TUIChatExtension_InputViewMoreItem_GroupID] as? String {
|
|
self.roomMessageManager.groupId = groupId
|
|
}
|
|
self.roomMessageManager.sendRoomMessageToGroup()
|
|
}
|
|
return [info]
|
|
}
|
|
if key == TUICore_TUIContactExtension_MeSettingMenu_ClassicExtensionID {
|
|
if let nav = param?[TUICore_TUIContactExtension_MeSettingMenu_Nav] as? UINavigationController {
|
|
self.settingMenuNavigationController = nav
|
|
}
|
|
let data = TUICommonTextCellData()
|
|
data.key = .roomDeviceSetText
|
|
data.showAccessory = true
|
|
let cell = TUICommonTextCell()
|
|
cell.fill(with: data)
|
|
cell.mm_h = 60
|
|
cell.mm_w = UIScreen.main.bounds.width
|
|
let tap = UITapGestureRecognizer(target: self, action: #selector(pushChatExtensionRoomSettingsViewController))
|
|
cell.addGestureRecognizer(tap)
|
|
let info = TUIExtensionInfo()
|
|
let param = [TUICore_TUIContactExtension_MeSettingMenu_Weight: 460,
|
|
TUICore_TUIContactExtension_MeSettingMenu_View: cell,
|
|
TUICore_TUIContactExtension_MeSettingMenu_Data: data,
|
|
] as [String : Any]
|
|
info.data = param
|
|
return [info]
|
|
}
|
|
return nil
|
|
}
|
|
}
|
|
|
|
private extension String {
|
|
static var meetingText: String {
|
|
localized("Quick meeting")
|
|
}
|
|
static var roomDeviceSetText: String {
|
|
localized("Meeting Settings")
|
|
}
|
|
}
|
|
|
|
|