added alarm handling
This commit is contained in:
@@ -2,12 +2,16 @@ import 'dart:convert';
|
||||
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
import '../alarm.dart';
|
||||
import '../task.dart';
|
||||
import 'interfaces/alarm_repository.dart';
|
||||
import 'interfaces/task_repository.dart';
|
||||
|
||||
class LocalRepository implements TaskRepository {
|
||||
class LocalRepository implements TaskRepository, AlarmRepository {
|
||||
static const String _tasksKey = 'tasks';
|
||||
static const String _taskOrderKey = 'taskOrder';
|
||||
static const String _alarmsKey = 'alarms';
|
||||
|
||||
SharedPreferencesWithCache? _prefs;
|
||||
|
||||
Future<void> initialize() async {
|
||||
@@ -30,6 +34,11 @@ class LocalRepository implements TaskRepository {
|
||||
return _prefs!.setStringList(_taskOrderKey, jsonList);
|
||||
}
|
||||
|
||||
Future<void> _saveAlarms(List<Alarm> alarms) async {
|
||||
final jsonList = alarms.map<String>((e) => jsonEncode(e.toJson())).toList();
|
||||
return _prefs!.setStringList(_alarmsKey, jsonList);
|
||||
}
|
||||
|
||||
// Create
|
||||
|
||||
@override
|
||||
@@ -46,6 +55,13 @@ class LocalRepository implements TaskRepository {
|
||||
return _saveTaskOrder(taskOrder);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> createAlarm(Alarm alarm) async {
|
||||
final alarms = await loadAlarms();
|
||||
alarms.add(alarm);
|
||||
_saveAlarms(alarms);
|
||||
}
|
||||
|
||||
// Read
|
||||
|
||||
@override
|
||||
@@ -61,6 +77,12 @@ class LocalRepository implements TaskRepository {
|
||||
return jsonList.map<String>((e) => jsonDecode(e)).toList();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<Alarm>> loadAlarms() async {
|
||||
final Iterable<String> jsonList = _prefs!.getStringList(_alarmsKey) ?? [];
|
||||
return jsonList.map<Alarm>((e) => Alarm.fromJson(jsonDecode(e))).toList();
|
||||
}
|
||||
|
||||
// Update
|
||||
|
||||
@override
|
||||
@@ -76,6 +98,14 @@ class LocalRepository implements TaskRepository {
|
||||
return _saveTaskOrder(taskOrder);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> updateAlarm(Alarm alarm) async {
|
||||
final alarms = await loadAlarms();
|
||||
alarms.remove(alarm);
|
||||
alarms.add(alarm);
|
||||
_saveAlarms(alarms);
|
||||
}
|
||||
|
||||
// Delete
|
||||
|
||||
@override
|
||||
@@ -91,4 +121,11 @@ class LocalRepository implements TaskRepository {
|
||||
taskOrder.remove(taskOrderEntry);
|
||||
return _saveTaskOrder(taskOrder);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> deleteAlarm(Alarm alarm) async {
|
||||
final alarms = await loadAlarms();
|
||||
alarms.remove(alarm);
|
||||
_saveAlarms(alarms);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user