| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- //
- // FloatChatState.swift
- // TUIRoomKit
- //
- // Created by aby on 2024/5/17.
- //
- import Foundation
- import RTCRoomEngine
- import ImSDK_Plus
- struct FloatChatState: Codable {
- var isFloatInputViewShow = false
- var roomId: String = ""
- var latestMessage = FloatChatMessage()
- }
- enum FloatChatMessageType: Codable, Equatable {
- case text
- case image
- case video
- case file
- }
- struct FloatChatMessage: Codable, Equatable {
- var id = UUID()
- var user = FloatChatUser()
- var type: FloatChatMessageType = .text
- var content: String = ""
- var fileName: String = ""
- var extInfo: [String: AnyCodable] = [:]
-
- init() {}
-
- init(user: FloatChatUser, content: String) {
- self.user = user
- self.content = content
- }
-
- init(msg: V2TIMMessage) {
- self.user = FloatChatUser(userId: msg.sender ?? "", userName: msg.nickName ?? "", avatarUrl: msg.faceURL ?? "")
- switch msg.elemType {
- case .ELEM_TYPE_TEXT:
- self.type = .text
- self.content = msg.textElem?.text ?? ""
- case .ELEM_TYPE_IMAGE:
- self.type = .image
- case .ELEM_TYPE_VIDEO:
- self.type = .video
- case .ELEM_TYPE_FILE:
- self.type = .file
- self.fileName = msg.fileElem?.filename ?? ""
- default: break
- }
- }
- }
- struct FloatChatUser: Codable, Equatable {
- var userId: String = ""
- var userName: String = ""
- var avatarUrl: String?
-
- init() {}
-
- init(loginInfo: TUILoginUserInfo) {
- self.userId = loginInfo.userId
- self.userName = loginInfo.userName
- self.avatarUrl = loginInfo.avatarUrl
- }
-
- init(userId: String, userName: String, avatarUrl: String?) {
- self.userId = userId
- self.userName = userName
- self.avatarUrl = avatarUrl
- }
-
- init(memberInfo: V2TIMGroupMemberInfo) {
- self.userId = memberInfo.userID ?? ""
- self.userName = memberInfo.nickName ?? userId
- self.avatarUrl = memberInfo.faceURL
- }
- }
|