import 'dart:convert'; import 'dart:typed_data'; import '../models/channel.dart'; import 'prefs_manager.dart'; class ChannelStore { static const String _key = 'channels'; Future> loadChannels() async { final prefs = PrefsManager.instance; final jsonStr = prefs.getString(_key); if (jsonStr == null) return []; try { final jsonList = jsonDecode(jsonStr) as List; return jsonList .map((entry) => _fromJson(entry as Map)) .toList(); } catch (_) { return []; } } Future saveChannels(List channels) async { final prefs = PrefsManager.instance; final jsonList = channels.map(_toJson).toList(); await prefs.setString(_key, jsonEncode(jsonList)); } Map _toJson(Channel channel) { return { 'index': channel.index, 'name': channel.name, 'psk': base64Encode(channel.psk), 'unreadCount': channel.unreadCount, }; } Channel _fromJson(Map json) { return Channel( index: json['index'] as int, name: json['name'] as String? ?? '', psk: json['psk'] != null ? Uint8List.fromList(base64Decode(json['psk'] as String)) : Uint8List(16), unreadCount: json['unreadCount'] as int? ?? 0, ); } }