import "package:path_provider/path_provider.dart";
import "package:async_redux/async_redux.dart";
import "package:only_bible_app/store/app_state.dart";
class AppPersistor extends Persistor<AppState> {
static const _fileName = "app_state.json";
Future<File> get _file async {
final dir = await getApplicationDocumentsDirectory();
return File("${dir.path}/$_fileName");
Future<AppState?> readState() async {
Future<Map<String, dynamic>?> readJson() async {
final file = await _file;
if (await file.exists()) {
final contents = await file.readAsString();
return jsonDecode(contents) as Map<String, dynamic>;
Future<void> deleteState() async {
final file = await _file;
if (await file.exists()) {
Future<void> persistDifference({
required AppState? lastPersistedState,
required AppState newState,
final file = await _file;
final contents = jsonEncode(newState.toJson());
await file.writeAsString(contents);
Duration? get throttle => const Duration(seconds: 1);