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)")
|
|
}
|
|
}
|