diff --git a/lib/persistence/timers_repository.dart b/lib/persistence/timers_repository.dart new file mode 100644 index 0000000..9c40d55 --- /dev/null +++ b/lib/persistence/timers_repository.dart @@ -0,0 +1,27 @@ +import 'dart:convert'; + +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:time_progress_calculator/persistence/timer_entity.dart'; + +class TimersRepository { + static const String _key = "timers_repo"; + final SharedPreferences prefs; + final JsonCodec codec; + + TimersRepository(this.prefs, {this.codec = json}); + + Future> loadTimers() { + final String jsonString = this.prefs.getString(_key); + return codec + .decode(jsonString)["timers"] + .cast>() + .map(TimerEntity.fromJson) + .toList(growable: false); + } + + Future saveTimers(List timers) { + final String jsonString = codec + .encode({"timers": timers.map((timer) => timer.toJson()).toList()}); + return this.prefs.setString(_key, jsonString); + } +}