final class ChatViewModel:ObservableObject {
var ref: DatabaseReference! = Database.database().reference()
@Published var messageList: [Message] = []
//MARK: - 메세지 업로드(Create)
func sendMessage(_ messageContent: String){
var tempMessageList: [Message] = self.messageList
let tempMessage: Message = Message(sender: "보낸이", content: messageContent, timeStamp: Date().timeIntervalSince1970)
tempMessageList.append(tempMessage)
do {
let jsonData = try JSONEncoder().encode(tempMessageList)
if let jsonString = String(data: jsonData, encoding: .utf8) {
self.ref.child("Message").setValue(jsonString)
}
} catch {
print("데이터를 JSON으로 변환하는 데 실패했습니다: \(error.localizedDescription)")
}
}
//MARK: - 메세지 패치(Read)
func fetchMessage(){
self.ref.child("Message").observe(.value) { snapshot in
guard let jsonString = snapshot.value as? String else {
print("데이터를 가져오는 데 실패했습니다.")
return
}
do {
let jsonData = Data(jsonString.utf8)
let messages = try JSONDecoder().decode([Message].self, from: jsonData)
DispatchQueue.main.async {
self.messageList = messages
print("count2::\(self.messageList.count)")
}
// messageList를 업데이트하고 UI를 갱신하는 로직을 추가하세요.
print("데이터를 디코딩완료:\(messages)")
print("\(self.messageList)")
} catch {
print("데이터를 디코딩하는 데 실패했습니다: \(error.localizedDescription)")
}
}
print("count::\(self.messageList.count)")
}
}