updateConversation method
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();
}