FloatChatState.swift 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. //
  2. // FloatChatState.swift
  3. // TUIRoomKit
  4. //
  5. // Created by aby on 2024/5/17.
  6. //
  7. import Foundation
  8. import RTCRoomEngine
  9. import ImSDK_Plus
  10. struct FloatChatState: Codable {
  11. var isFloatInputViewShow = false
  12. var roomId: String = ""
  13. var latestMessage = FloatChatMessage()
  14. }
  15. enum FloatChatMessageType: Codable, Equatable {
  16. case text
  17. case image
  18. case video
  19. case file
  20. }
  21. struct FloatChatMessage: Codable, Equatable {
  22. var id = UUID()
  23. var user = FloatChatUser()
  24. var type: FloatChatMessageType = .text
  25. var content: String = ""
  26. var fileName: String = ""
  27. var extInfo: [String: AnyCodable] = [:]
  28. init() {}
  29. init(user: FloatChatUser, content: String) {
  30. self.user = user
  31. self.content = content
  32. }
  33. init(msg: V2TIMMessage) {
  34. self.user = FloatChatUser(userId: msg.sender ?? "", userName: msg.nickName ?? "", avatarUrl: msg.faceURL ?? "")
  35. switch msg.elemType {
  36. case .ELEM_TYPE_TEXT:
  37. self.type = .text
  38. self.content = msg.textElem?.text ?? ""
  39. case .ELEM_TYPE_IMAGE:
  40. self.type = .image
  41. case .ELEM_TYPE_VIDEO:
  42. self.type = .video
  43. case .ELEM_TYPE_FILE:
  44. self.type = .file
  45. self.fileName = msg.fileElem?.filename ?? ""
  46. default: break
  47. }
  48. }
  49. }
  50. struct FloatChatUser: Codable, Equatable {
  51. var userId: String = ""
  52. var userName: String = ""
  53. var avatarUrl: String?
  54. init() {}
  55. init(loginInfo: TUILoginUserInfo) {
  56. self.userId = loginInfo.userId
  57. self.userName = loginInfo.userName
  58. self.avatarUrl = loginInfo.avatarUrl
  59. }
  60. init(userId: String, userName: String, avatarUrl: String?) {
  61. self.userId = userId
  62. self.userName = userName
  63. self.avatarUrl = avatarUrl
  64. }
  65. init(memberInfo: V2TIMGroupMemberInfo) {
  66. self.userId = memberInfo.userID ?? ""
  67. self.userName = memberInfo.nickName ?? userId
  68. self.avatarUrl = memberInfo.faceURL
  69. }
  70. }