markMessagesAsRead method

Future<void> markMessagesAsRead(
  1. String chatId,
  2. String currentUserId
)

Mark all unread messages as "read" when the recipient opens the chat

Implementation

Future<void> markMessagesAsRead(String chatId, String currentUserId) async {
  QuerySnapshot messages = await _firestore
      .collection('chats')
      .doc(chatId)
      .collection('messages')
      .where('receiverId',
          isEqualTo: currentUserId) // Messages meant for this user
      .where('status', isEqualTo: 'unread')
      .get();

  for (var doc in messages.docs) {
    doc.reference.update({'status': 'read'});
  }

  // ✅ Reset unread count to 0 when user opens chat
  FirebaseFirestore.instance.collection('chats').doc(chatId).update({
    'unreadMessageCount.$currentUserId': 0,
  });
}