import 'dart:convert'; import 'package:shared_preferences/shared_preferences.dart'; /// 聊天消息的本地副本。云端只保留 7 天,客户端仍可查看本机历史消息。 class ChatLocalStore { ChatLocalStore._(); static Future>> load(String conversationId) async { if (conversationId.isEmpty) return []; final p = await SharedPreferences.getInstance(); final raw = p.getString('im.local.$conversationId'); if (raw == null || raw.isEmpty) return []; try { final list = jsonDecode(raw); if (list is! List) return []; return list.whereType().map((e) => Map.from(e)).toList(); } catch (_) { return []; } } static Future save(String conversationId, List> items) async { if (conversationId.isEmpty) return; final p = await SharedPreferences.getInstance(); final durable = items.where((e) => e['_pending'] != true).map((e) { final copy = Map.from(e)..remove('_pending'); return copy; }).toList(); await p.setString('im.local.$conversationId', jsonEncode(durable)); } }