deleteMessage method

dynamic deleteMessage({
  1. required ChatModal message,
  2. required String messageId,
  3. required String chatId,
  4. required CollectionReference<Object?> chatCollection,
})

Implementation

deleteMessage({
  required ChatModal message,
  required String messageId,
  required String chatId,
  required CollectionReference chatCollection,
}) async
{
  // String userId =
  // message.from == userData!.userId ? message.to : message.from;
  customPrint('Deleting message $messageId for ${userData!.userId}');
  DocumentSnapshot documentSnapshot = await chatCollection
      .doc(chatId)
      .collection('messages')
      .doc(messageId)
      .get();
  Map<String, dynamic> data = documentSnapshot.data() as Map<String, dynamic>;
  List visibleTo = data['visibleTo'];
  if (visibleTo.contains(userData!.userId)) {
    visibleTo.remove(userData!.userId);
    if (visibleTo.isEmpty) {
      documentSnapshot.reference.delete();
      customPrint('The message is deleted...removed document');
    } else {
      data['visibleTo'] = visibleTo;
      documentSnapshot.reference.update(data);
      customPrint('The message is deleted...removed user id');
    }
  }
}