import FirebaseDatabase
class AuthViewModal: ObservableObject { @Published var chatUsers: [UserAFK] = [] // List of chat users
private var databaseRef = Database.database().reference()
func getChatList(currentUserId: String) {
databaseRef.child("chats").observeSingleEvent(of: .value) { snapshot in
var chatData: [String: UserAFK] = [:] // Dictionary to store unique users with latest messages
for case let chatSnapshot as DataSnapshot in snapshot.children {
if let messages = chatSnapshot.childSnapshot(forPath: "messages").children.allObjects as? [DataSnapshot] {
for message in messages {
if let data = message.value as? [String: Any] {
let senderId = data["sender_id"] as? String ?? ""
let receiverId = data["receiver_id"] as? String ?? ""
let messageText = data["msg"] as? String ?? "No message"
let profileImage = data["user_profile"] as? String ?? "defaultImage"
// Find the other user in the chat
let otherUserId = senderId == currentUserId ? receiverId : senderId
// Store only the latest message per user
chatData[otherUserId] = UserAFK(
id: otherUserId,
username: "User \(otherUserId)", // Set username dynamically
userMessages: [messageText],
image: profileImage
)
}
}
}
}
DispatchQueue.main.async {
self.chatUsers = Array(chatData.values) // Convert dictionary to array
}
}
}
}