setConversationListUpdateNative static method
更新部分会话数据 - 原生平台
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 (_) {}
}
}