RoomMessageBubbleCellData.swift 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. //
  2. // RoomMsgViewModel.swift
  3. // TUIRoomKit
  4. //
  5. // Created by janejntang on 2023/5/8.
  6. // Copyright © 2023 Tencent. All rights reserved.
  7. //
  8. import Foundation
  9. import TIMCommon
  10. import TUICore
  11. import RTCRoomEngine
  12. @objc(RoomMessageBubbleCellData)
  13. class RoomMessageBubbleCellData: TUIBubbleMessageCellData {
  14. var messageModel: RoomMessageModel?
  15. override init(direction: TMsgDirection) {
  16. super.init(direction: direction)
  17. }
  18. override class func getCellData(_ message: V2TIMMessage) -> TUIMessageCellData {
  19. let messageModel = RoomMessageModel()
  20. messageModel.updateMessage(message: message)
  21. if messageModel.roomId == RoomManager.shared.roomId, messageModel.roomState != .destroyed {
  22. RoomManager.shared.roomObserver.messageModel.updateMessage(message: message)
  23. }
  24. let messageCellData = RoomMessageBubbleCellData(direction: message.isSelf ? .MsgDirectionOutgoing : .MsgDirectionIncoming)
  25. messageCellData.messageModel = messageModel
  26. return messageCellData
  27. }
  28. override class func getDisplayString(_ message: V2TIMMessage) -> String {
  29. let businessID = parseBusinessID(message: message)
  30. if businessID == BussinessID_GroupRoomMessage {
  31. let dict = TUITool.jsonData2Dictionary(message.customElem?.data) as? [String: Any]
  32. let userName = dict?["ownerName"] as? String ?? ""
  33. return localizedReplace(.quickMeetingText, replace: userName)
  34. } else {
  35. return super.getDisplayString(message)
  36. }
  37. }
  38. private class func parseBusinessID(message: V2TIMMessage?) -> String {
  39. guard let message = message else { return "" }
  40. let customData = message.customElem?.data
  41. let dict = TUITool.jsonData2Dictionary(customData)
  42. guard let businessID = dict?["businessID"] as? String else { return ""}
  43. return businessID
  44. }
  45. deinit {
  46. debugPrint("deinit \(self)")
  47. }
  48. }
  49. private extension String {
  50. static var quickMeetingText: String {
  51. localized("xx's quick conference")
  52. }
  53. }