feat(chat): 유저 크리에이터 DM을 추가한다
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
import Foundation
|
||||
|
||||
enum UserCreatorChatDisplayMessageStatus: Equatable {
|
||||
case sent
|
||||
case pending
|
||||
case failed
|
||||
}
|
||||
|
||||
struct UserCreatorChatDisplayMessage: Identifiable, Equatable {
|
||||
let id: String
|
||||
let requestId: String?
|
||||
let messageId: Int?
|
||||
let messageType: String
|
||||
let mine: Bool
|
||||
let createdAt: Int64
|
||||
let textMessage: String?
|
||||
let voiceMessageUrl: String?
|
||||
let senderId: Int?
|
||||
let senderNickname: String?
|
||||
let senderProfileImageUrl: String?
|
||||
var status: UserCreatorChatDisplayMessageStatus
|
||||
|
||||
init(message: UserCreatorChatMessageItem) {
|
||||
self.id = "server-\(message.messageId)"
|
||||
self.requestId = nil
|
||||
self.messageId = message.messageId
|
||||
self.messageType = message.messageType
|
||||
self.mine = message.mine
|
||||
self.createdAt = message.createdAt
|
||||
self.textMessage = message.textMessage
|
||||
self.voiceMessageUrl = message.voiceMessageUrl
|
||||
self.senderId = message.senderId
|
||||
self.senderNickname = message.senderNickname
|
||||
self.senderProfileImageUrl = message.senderProfileImageUrl
|
||||
self.status = .sent
|
||||
}
|
||||
|
||||
init(pendingText text: String, requestId: String, createdAt: Int64) {
|
||||
self.id = "pending-\(requestId)"
|
||||
self.requestId = requestId
|
||||
self.messageId = nil
|
||||
self.messageType = "TEXT"
|
||||
self.mine = true
|
||||
self.createdAt = createdAt
|
||||
self.textMessage = text
|
||||
self.voiceMessageUrl = nil
|
||||
self.senderId = nil
|
||||
self.senderNickname = nil
|
||||
self.senderProfileImageUrl = nil
|
||||
self.status = .pending
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
import Foundation
|
||||
|
||||
struct UserCreatorCreateRoomRequest: Encodable {
|
||||
let creatorId: Int
|
||||
}
|
||||
|
||||
struct UserCreatorCreateRoomResponse: Decodable {
|
||||
let roomId: Int
|
||||
}
|
||||
|
||||
struct UserCreatorOpenRoomResponse: Decodable {
|
||||
let roomId: Int
|
||||
let opponentNickname: String
|
||||
let opponentProfileImageUrl: String?
|
||||
let messages: [UserCreatorChatMessageItem]
|
||||
let hasMore: Bool
|
||||
let nextCursor: Int?
|
||||
}
|
||||
|
||||
struct UserCreatorChatMessagesResponse: Decodable {
|
||||
let messages: [UserCreatorChatMessageItem]
|
||||
let hasMore: Bool
|
||||
let nextCursor: Int?
|
||||
}
|
||||
|
||||
struct UserCreatorChatMessageItem: Codable, Identifiable {
|
||||
let messageId: Int
|
||||
let messageType: String
|
||||
let mine: Bool
|
||||
let createdAt: Int64
|
||||
let textMessage: String?
|
||||
let voiceMessageUrl: String?
|
||||
let senderId: Int
|
||||
let senderNickname: String
|
||||
let senderProfileImageUrl: String?
|
||||
|
||||
var id: Int { messageId }
|
||||
}
|
||||
|
||||
struct UserCreatorVoiceMessageResponse: Decodable {
|
||||
let message: UserCreatorChatMessageItem
|
||||
let deliveredRealtime: Bool
|
||||
let pushSent: Bool
|
||||
}
|
||||
Reference in New Issue
Block a user