sendMessage method
Sends a new message and updates chat summary.
Implementation
Future<void> sendMessage(Message message) async {
final chatId = getChatId(message.senderId, message.receiverId);
DocumentReference messageRef = _firestore
.collection('chats')
.doc(chatId)
.collection('messages')
.doc(message.messageId);
await messageRef.set(message.toMap(useCurrentTime: true));
// Determine last message text based on type
String lastMessageText = message.text.isNotEmpty
? message.text
: (message.type == MessageType.image
? "š· Image"
: message.type == MessageType.audio
? "šµ Audio"
: message.type == MessageType.video
? "š¹ Video"
: "š File");
// Update chat summary
await _firestore.collection('chats').doc(chatId).set({
'lastMessage': lastMessageText,
'lastMessageType': message.type.toString(),
'lastMessageTime': FieldValue.serverTimestamp(),
'lastMessageSender': message.senderId, // Store sender's ID
'users': [message.senderId, message.receiverId],
'unreadMessageCount': {'${message.receiverId}': FieldValue.increment(1)},
'typingStatus': {
'${message.senderId}': false,
'${message.receiverId}': false,
},
}, SetOptions(merge: true));
}