45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
//
 | 
						|
//  ChatRoomViewModel.swift
 | 
						|
//  SodaLive
 | 
						|
//
 | 
						|
//  Created by klaus on 9/2/25.
 | 
						|
//
 | 
						|
 | 
						|
import Foundation
 | 
						|
import Combine
 | 
						|
import Moya
 | 
						|
 | 
						|
final class ChatRoomViewModel: ObservableObject {
 | 
						|
    // MARK: - Published State
 | 
						|
    @Published var isLoading: Bool = false
 | 
						|
    @Published var errorMessage: String = ""
 | 
						|
    @Published var isShowPopup = false
 | 
						|
    
 | 
						|
    @Published private(set) var characterProfileUrl: String = ""
 | 
						|
    @Published private(set) var characterName: String = "Character Name"
 | 
						|
    @Published private(set) var characterType: CharacterType = .Character
 | 
						|
    
 | 
						|
    // MARK: - Message State
 | 
						|
    @Published var messageText: String = ""
 | 
						|
    @Published private(set) var messages: [ServerChatMessage] = []
 | 
						|
    
 | 
						|
    // MARK: - Private
 | 
						|
    private let userRepository = UserRepository()
 | 
						|
    private let repository = ChatRoomRepository()
 | 
						|
    private var subscription = Set<AnyCancellable>()
 | 
						|
    
 | 
						|
    // MARK: - Actions
 | 
						|
    @MainActor
 | 
						|
    func sendMessage() {
 | 
						|
        guard !messageText.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else {
 | 
						|
            return
 | 
						|
        }
 | 
						|
        
 | 
						|
        let message = messageText.trimmingCharacters(in: .whitespacesAndNewlines)
 | 
						|
        messageText = ""
 | 
						|
        
 | 
						|
        // TODO: 실제 메시지 전송 로직 구현
 | 
						|
        DEBUG_LOG("메시지 전송: \(message)")
 | 
						|
    }
 | 
						|
}
 |