79404297

Date: 2025-02-01 01:44:12
Score: 0.5
Natty:
Report link

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

}

Reasons:
  • Long answer (-1):
  • Has code block (-0.5):
  • User mentioned (1): @Published
  • Low reputation (1):
Posted by: A67 - Raju