60 lines
2.0 KiB
Swift
60 lines
2.0 KiB
Swift
|
|
//
|
||
|
|
// 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")
|
||
|
|
}
|
||
|
|
}
|