Files
midi_ios/TUIKit/TUIRoomKit/RoomExtension/View/ViewModel/RoomMessageBubbleCellData.swift

60 lines
2.0 KiB
Swift
Raw Normal View History

2025-08-14 10:07:49 +08:00
//
// RoomMsgViewModel.swift
// TUIRoomKit
//
// Created by janejntang on 2023/5/8.
// Copyright © 2023 Tencent. All rights reserved.
//
import Foundation
import TIMCommon
import TUICore
import RTCRoomEngine
@objc(RoomMessageBubbleCellData)
class RoomMessageBubbleCellData: TUIBubbleMessageCellData {
var messageModel: RoomMessageModel?
override init(direction: TMsgDirection) {
super.init(direction: direction)
}
override class func getCellData(_ message: V2TIMMessage) -> TUIMessageCellData {
let messageModel = RoomMessageModel()
messageModel.updateMessage(message: message)
if messageModel.roomId == RoomManager.shared.roomId, messageModel.roomState != .destroyed {
RoomManager.shared.roomObserver.messageModel.updateMessage(message: message)
}
let messageCellData = RoomMessageBubbleCellData(direction: message.isSelf ? .MsgDirectionOutgoing : .MsgDirectionIncoming)
messageCellData.messageModel = messageModel
return messageCellData
}
override class func getDisplayString(_ message: V2TIMMessage) -> String {
let businessID = parseBusinessID(message: message)
if businessID == BussinessID_GroupRoomMessage {
let dict = TUITool.jsonData2Dictionary(message.customElem.data) as? [String: Any]
let userName = dict?["ownerName"] as? String ?? ""
return userName + .quickMeetingText
} else {
return super.getDisplayString(message)
}
}
private class func parseBusinessID(message: V2TIMMessage?) -> String {
guard let message = message else { return "" }
let customData = message.customElem.data
let dict = TUITool.jsonData2Dictionary(customData)
guard let businessID = dict?["businessID"] as? String else { return ""}
return businessID
}
deinit {
debugPrint("deinit \(self)")
}
}
private extension String {
static var quickMeetingText: String {
localized("'s quick meeting")
}
}