This commit is contained in:
启星
2025-08-08 10:49:36 +08:00
parent 6400cf78bb
commit b5ce3d580a
8780 changed files with 978183 additions and 0 deletions

View File

@@ -0,0 +1,96 @@
//
// RoomMessageViewModel.swift
// TUIRoomKit
//
// Created by janejntang on 2023/5/10.
// Copyright © 2023 Tencent. All rights reserved.
//
import Foundation
import RTCRoomEngine
import TUICore
import TIMCommon
protocol RoomMessageViewResponder: NSObject {
func updateStackView()
func updateRoomStatus()
func updateEnteredRoom()
func updateExitRoom()
}
class RoomMessageViewModel: NSObject {
var message: RoomMessageModel
private var engineManager: EngineManager {
EngineManager.shared
}
lazy var userId: String = {
return TUILogin.getUserID() ?? EngineManager.shared.store.currentUser.userId
}()
var messageManager: RoomMessageManager {
RoomMessageManager.shared
}
let roomManager = RoomManager.shared
weak var viewResponder: RoomMessageViewResponder?
init(message: RoomMessageModel) {
self.message = message
super.init()
roomManager.roomObserver.addListener(listener: self)
}
deinit {
roomManager.roomObserver.removeListener(listener: self)
debugPrint("deinit \(self)")
}
func changeMessage(message: RoomMessageModel) {
self.message = message
viewResponder?.updateStackView()
viewResponder?.updateRoomStatus()
}
func enterRoomAction() {
guard BusinessSceneUtil.canJoinRoom() else { return }
if roomManager.isEnteredOtherRoom(roomId: message.roomId) {
roomManager.exitOrDestroyPreviousRoom { [weak self] in
guard let self = self else { return }
self.enterRoom()
} onError: { [weak self] code, message in
debugPrint("exitRoom,code:\(code),message:\(message)")
guard let self = self else { return }
self.enterRoom()
}
} else {
enterRoom()
}
}
private func enterRoom() {
if !engineManager.store.isEnteredRoom {
roomManager.enterRoom(roomId: message.roomId)
} else {
EngineEventCenter.shared.notifyUIEvent(key: .TUIRoomKitService_ShowRoomMainView, param: [:])
}
}
func inviteUserAction() {
guard message.groupId.count > 0 else { return }
let inviter = TUILoginUserInfo()
inviter.userId = userId
inviter.userName = TUILogin.getNickName() ?? ""
inviter.avatarUrl = TUILogin.getFaceUrl() ?? ""
InviteToJoinRoomManager.startInviteToJoinRoom(message: message, inviter: inviter)
}
}
extension RoomMessageViewModel: RoomObserverListener {
func onRoomEnter(messageId: String, code: Int, message: String) {
if code == 0, messageId == self.message.messageId {
viewResponder?.updateEnteredRoom()
}
}
func onRoomExit(messageId: String) {
if messageId == self.message.messageId {
viewResponder?.updateExitRoom()
}
}
}