feat(chat-room) 채팅방 골격 추가
This commit is contained in:
		@@ -0,0 +1,18 @@
 | 
			
		||||
//
 | 
			
		||||
//  AiMessageItemView.swift
 | 
			
		||||
//  SodaLive
 | 
			
		||||
//
 | 
			
		||||
//  Created by klaus on 9/2/25.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
import SwiftUI
 | 
			
		||||
 | 
			
		||||
struct AiMessageItemView: View {
 | 
			
		||||
    var body: some View {
 | 
			
		||||
        Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#Preview {
 | 
			
		||||
    AiMessageItemView()
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,10 @@
 | 
			
		||||
//
 | 
			
		||||
//  SendChatMessageRequest.swift
 | 
			
		||||
//  SodaLive
 | 
			
		||||
//
 | 
			
		||||
//  Created by klaus on 9/2/25.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
struct SendChatMessageRequest: Encodable {
 | 
			
		||||
    let message: String
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,12 @@
 | 
			
		||||
//
 | 
			
		||||
//  SendChatMessageResponse.swift
 | 
			
		||||
//  SodaLive
 | 
			
		||||
//
 | 
			
		||||
//  Created by klaus on 9/2/25.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
struct SendChatMessageResponse: Decodable {
 | 
			
		||||
    let messages: [ServerChatMessage]
 | 
			
		||||
    let totalRemaining: Int
 | 
			
		||||
    let nextRechargeAtEpoch: Int64?
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,18 @@
 | 
			
		||||
//
 | 
			
		||||
//  ServerChatMessage.swift
 | 
			
		||||
//  SodaLive
 | 
			
		||||
//
 | 
			
		||||
//  Created by klaus on 9/2/25.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
struct ServerChatMessage: Decodable {
 | 
			
		||||
    let messageId: Int64
 | 
			
		||||
    let message: String
 | 
			
		||||
    let profileImageUrl: String
 | 
			
		||||
    let mine: Bool
 | 
			
		||||
    let createdAt: Int64
 | 
			
		||||
    let messageType: String
 | 
			
		||||
    let imageUrl: String?
 | 
			
		||||
    let price: Int?
 | 
			
		||||
    let hasAccess: Bool
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,18 @@
 | 
			
		||||
//
 | 
			
		||||
//  TypingIndicatorItemView.swift
 | 
			
		||||
//  SodaLive
 | 
			
		||||
//
 | 
			
		||||
//  Created by klaus on 9/2/25.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
import SwiftUI
 | 
			
		||||
 | 
			
		||||
struct TypingIndicatorItemView: View {
 | 
			
		||||
    var body: some View {
 | 
			
		||||
        Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#Preview {
 | 
			
		||||
    TypingIndicatorItemView()
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,18 @@
 | 
			
		||||
//
 | 
			
		||||
//  UserMessageItemView.swift
 | 
			
		||||
//  SodaLive
 | 
			
		||||
//
 | 
			
		||||
//  Created by klaus on 9/2/25.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
import SwiftUI
 | 
			
		||||
 | 
			
		||||
struct UserMessageItemView: View {
 | 
			
		||||
    var body: some View {
 | 
			
		||||
        Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#Preview {
 | 
			
		||||
    UserMessageItemView()
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user