setMessageListNative static method

void setMessageListNative(
  1. List<Map<String, dynamic>> msgList
)

设置聊天消息 - 原生平台

Implementation

static void setMessageListNative(List<Map<String, dynamic>> msgList) {
  try {
    Set<String> hasChangeConversationIDList = {};
    Map<String, List<Map<String, dynamic>>> newConfig = Map.from(messageListNativeConfig.value);
    for (Map<String, dynamic> messageItem in msgList) {
      List<Map<String, dynamic>> conversationIDAboutMsgList = newConfig[messageItem['message_conv_id']] ?? [];
      if (conversationIDAboutMsgList.where((find) => find['message_msg_id'] == messageItem['message_msg_id']).isEmpty) {
        conversationIDAboutMsgList.add(messageItem);
        conversationIDAboutMsgList.sort((a, b) {
          int timeCompare = a['message_client_time'].compareTo(b['message_client_time']);
          if (timeCompare != 0) return timeCompare;

          int aSeq = a['message_seq'];
          int bSeq = b['message_seq'];
          int seqCompare = aSeq.compareTo(bSeq);
          return seqCompare;
        });
        newConfig[messageItem['message_conv_id']] = conversationIDAboutMsgList;
        hasChangeConversationIDList.add(messageItem['message_conv_id']);
      }
    }
    if (hasChangeConversationIDList.isNotEmpty) {
      messageListNativeConfig.value = newConfig;
      setCatch('messageListConfig', jsonEncode(messageListNativeConfig.value));
    }
  } catch (_) {}
}