setConversationListUpdateNative static method

Future<void> setConversationListUpdateNative(
  1. List<Map<String, dynamic>> list
)

更新部分会话数据 - 原生平台

Implementation

static Future<void> setConversationListUpdateNative(List<Map<String, dynamic>> list) async {
  if (list.isNotEmpty) {
    try {
      List<Map<String, dynamic>> convListFilter = _doFilterConvDataListFunIsBlock ? list : (await ImState.doFilterConvDataList?.call(list, PaginationType.update) ?? list);

      final Map<String, Map<String, dynamic>> newDataMap = {
        for (var item in convListFilter)
          if (item['conv_id'] != null) item['conv_id'].toString(): item
      };

      final List<Map<String, dynamic>> result = conversationListNative.value.map((oldItem) {
        final String convId = oldItem['conv_id']?.toString() ?? '';
        if (newDataMap.containsKey(convId)) {
          return newDataMap[convId]!;
        }
        return oldItem;
      }).toList();

      conversationListNative.value = result;

      needClearUnreadConversations.value = Set.from(
          conversationListNative.value
              .where((conversationItem) => (conversationItem['conv_unread_num'] ?? 0) > 0)
              .map((conversationItem) => conversationItem['conv_id']?.toString() ?? '')
              .where((id) => id.isNotEmpty)
      );

      setCatch('conversationListNative', jsonEncode(conversationListNative.value));
      _resetCurrentFocusConversationFromSessionNative();
    } catch (_) {}
  }
}