setReceipts method

  1. @override
dynamic setReceipts(
  1. MessageReceipt receipt
)
override

Implementation

@override
setReceipts(MessageReceipt receipt) {
  for (int i = 0; i < list.length; i++) {
    Conversation conversation = list[i];
    if (conversation.conversationType == ReceiverTypeConstants.user &&
        receipt.sender.uid == ((conversation.conversationWith as User).uid)) {
      BaseMessage? lastMessage = conversation.lastMessage;

      //Check if receipt type is delivered
      if (lastMessage != null &&
          lastMessage.deliveredAt == null &&
          receipt.receiptType == ReceiptTypeConstants.delivered &&
          receipt.messageId == lastMessage.id) {
        lastMessage.deliveredAt = receipt.deliveredAt;
        list[i].lastMessage = lastMessage;
        update();
        break;
      } else if (lastMessage != null &&
          lastMessage.readAt == null &&
          receipt.receiptType == ReceiptTypeConstants.read &&
          receipt.messageId == lastMessage.id) {
        //if receipt type is read
        lastMessage.readAt = receipt.readAt;
        list[i].lastMessage = lastMessage;
        update();

        break;
      }
    } else if(conversation.conversationType == ReceiverTypeConstants.group){
      BaseMessage? lastMessage = conversation.lastMessage;

      //Check if receipt type is delivered to all
      if (lastMessage != null &&
          lastMessage.deliveredAt == null &&
          receipt.receiptType == ReceiptTypeConstants.deliveredToAll &&
          receipt.messageId == lastMessage.id) {
        lastMessage.deliveredAt = receipt.deliveredAt;
        list[i].lastMessage = lastMessage;
        update();
        break;
      } else if (lastMessage != null &&
          lastMessage.readAt == null &&
          receipt.receiptType == ReceiptTypeConstants.readByAll &&
          receipt.messageId == lastMessage.id) {
        //if receipt type is read by all
        lastMessage.readAt = receipt.readAt;
        list[i].lastMessage = lastMessage;
        update();
        break;
      }
    }
  }
}