import 'dart:convert'; import 'package:shared_preferences/shared_preferences.dart'; import '../models/geofence_runtime_state.dart'; class GeofenceRuntimeStore { static const String _runtimeKey = 'ignis_geofence_runtime'; Future load() async { final prefs = await SharedPreferences.getInstance(); final raw = prefs.getString(_runtimeKey); if (raw == null || raw.isEmpty) { return const GeofenceRuntimeState(); } final decoded = jsonDecode(raw); if (decoded is! Map) { return const GeofenceRuntimeState(); } return GeofenceRuntimeState.fromJson(decoded); } Future save(GeofenceRuntimeState state) async { final prefs = await SharedPreferences.getInstance(); final data = state.toJson(); if (data.isEmpty) { await prefs.remove(_runtimeKey); return; } await prefs.setString(_runtimeKey, jsonEncode(data)); } Future armForHome(String homeId) async { final next = (await load()).armForHome(homeId); await save(next); return next; } Future disarm() async { final next = (await load()).disarm(); await save(next); return next; } Future removeHome(String homeId) async { final next = (await load()).removeHome(homeId); await save(next); return next; } }