updateConversation method

  1. @override
dynamic updateConversation(
  1. Conversation conversation
)
override

Update the conversation with new conversation Object matched according to conversation id , if not matched inserted at top

Implementation

@override
updateConversation(Conversation conversation) {
  int matchingIndex = getMatchingIndex(conversation);

  bool incrementUnreadCount = false;
  bool isCategoryMessage = (conversation.lastMessage!.category ==
          MessageCategoryConstants.message) ||
      (conversation.lastMessage!.category ==
          MessageCategoryConstants.interactive) ||
      (conversation.lastMessage!.category == MessageCategoryConstants.call);
  if (conversation.lastMessage is CustomMessage) {
    final message = conversation.lastMessage as CustomMessage;
    if (message.updateConversation == true ||
        (conversation.lastMessage?.metadata?[
                    UpdateSettingsConstant.incrementUnreadCount] ??
                false) ==
            true ||
        (CometChatUIKit.conversationUpdateSettings?.customMessages ??
            true == true)) {
      incrementUnreadCount = true;
    }
  }

  if (matchingIndex != -1) {
    Conversation oldConversation = list[matchingIndex];

    if ((incrementUnreadCount || isCategoryMessage) &&
        conversation.lastMessage?.sender?.uid != loggedInUserId) {
      conversation.unreadMessageCount =
          (oldConversation.unreadMessageCount ?? 0) + 1;
    } else {
      conversation.unreadMessageCount = oldConversation.unreadMessageCount;
    }
    removeElementAt(matchingIndex);
    addElement(conversation);
  } else {
    if ((incrementUnreadCount || isCategoryMessage) &&
        conversation.lastMessage?.sender?.uid != loggedInUserId) {
      int oldCount = conversation.unreadMessageCount ?? 0;
      conversation.unreadMessageCount = oldCount + 1;
    }
    addElement(conversation);
  }

  update();
}