fetchMessages method
Fetches messages for a chat, optionally paginated after lastMessage
.
Implementation
Future<List<Message>> fetchMessages(String chatId,
{Message? lastMessage}) async {
Query query = _firestore
.collection('chats')
.doc(chatId)
.collection('messages')
.orderBy('timestamp', descending: true)
.limit(initialLimit);
if (lastMessage != null) {
query = query.startAfter([lastMessage.toMap()['timestamp']]);
}
QuerySnapshot querySnapshot = await query.get();
print("🔥 Fetching messages for chatId: $chatId");
print("🔥 Last Timestamp: ${lastMessage?.timestamp}");
print("🔥 Query Retrieved Messages: ${querySnapshot.docs.length}");
// Print all retrieved message timestamps
for (var doc in querySnapshot.docs) {
print(
"🔥 Message Timestamp: ${(doc.data() as Map<String, dynamic>)['timestamp']}");
}
List<Message> messages = querySnapshot.docs
.map((doc) => Message.fromMap(doc.data() as Map<String, dynamic>))
.toList();
return messages;
}