sendMessageReply method

void sendMessageReply(
  1. Message partialMessage,
  2. String roomId
)

Implementation

void sendMessageReply(mm.Message partialMessage, String roomId) async {
  if (firebaseUser == null) return;

  mm.Message? message = partialMessage;

  final messageMap = message.toJson();
  messageMap.removeWhere((key, value) => key == 'author' || key == 'id');
  messageMap['authorId'] = firebaseUser!.uid;
  messageMap['createdAt'] = FieldValue.serverTimestamp();
  messageMap['updatedAt'] = FieldValue.serverTimestamp();
  messageMap['seenBy'] = {
    firebaseUser!.uid: FieldValue.serverTimestamp(),

    /// Sender has seen the message
  };

  await getFirebaseFirestore
      .collection('${FireChatConst.roomsCollectionName}/$roomId/messages')
      .add(messageMap);

  // Extract the text content of the message
  String lastMessageText = '';
  if (message is mm.TextMessage) {
    lastMessageText = message.text;
  } else if (message is mm.ImageMessage) {
    lastMessageText = '📷 Image';
  } else if (message is mm.FileMessage) {
    lastMessageText = '📄 File';
  } else if (message is mm.CustomMessage) {
    lastMessageText = 'Custom Message';
  }

  await getFirebaseFirestore
      .collection(FireChatConst.roomsCollectionName)
      .doc(roomId)
      .update({
    'updatedAt': FieldValue.serverTimestamp(),
    'lastMsg': lastMessageText
  });
}