streamTotalUnreadMessagesForUser method

Stream<int> streamTotalUnreadMessagesForUser(
  1. String userId
)

Get the total unread messages for a specific user

Implementation

Stream<int> streamTotalUnreadMessagesForUser(String userId) {
  return _firestore
      .collection('chats')
      .where('users', arrayContains: userId)
      .snapshots()
      .map((querySnapshot) {
    int totalUnread = 0;

    for (var doc in querySnapshot.docs) {
      final data = doc.data();
      final unreadMap =
          Map<String, dynamic>.from(data['unreadMessageCount'] ?? {});
      final userUnread = unreadMap[userId];
      if (userUnread is int) {
        totalUnread += userUnread;
      }
    }

    return totalUnread;
  });
}