import 'package:meshcore_open/storage/channel_region_store.dart'; import 'package:meshcore_open/storage/channel_store.dart'; import 'prefs_manager.dart'; typedef Region = String; class RegionStore { static const String key = 'regions'; String publicKeyHex = ''; set setPublicKeyHex(String value) => publicKeyHex = value.length >= 10 ? value.substring(0, 10) : ''; List loadRegions() { final prefs = PrefsManager.instance; List? region = prefs.getStringList(key); return region ?? []; } void saveRegions(List regions) { final prefs = PrefsManager.instance; var distinctRegions = [ ...{...regions}, ]; distinctRegions.sort(); prefs.setStringList(key, distinctRegions); } void addRegion(Region region) { final regions = loadRegions(); regions.add(region); saveRegions(regions); } Future removeRegion(Region region) async { final regions = loadRegions(); final channelStore = ChannelStore(); final channelRegionStore = ChannelRegionStore(); channelStore.setPublicKeyHex = publicKeyHex; channelRegionStore.setPublicKeyHex = publicKeyHex; for (var channel in await channelStore.loadChannels()) { var channelRegion = await channelRegionStore.loadRegion(channel.index); if (channelRegion == region) { channelRegionStore.saveRegion(channel.index, ''); } } regions.remove(region); saveRegions(regions); } }