From f9642b02308882142981d3636ad6cdf39dd9f1a6 Mon Sep 17 00:00:00 2001 From: marco Date: Thu, 18 Jun 2026 19:01:00 +0200 Subject: [PATCH] extended logic of alarm interface --- lib/model/alarm.dart | 26 ++++++++++++++++++++++++++ lib/model/location_alarm.dart | 1 + lib/model/time_alarm.dart | 1 + 3 files changed, 28 insertions(+) diff --git a/lib/model/alarm.dart b/lib/model/alarm.dart index a149adf..f8f5844 100644 --- a/lib/model/alarm.dart +++ b/lib/model/alarm.dart @@ -1,3 +1,29 @@ +import 'location_alarm.dart'; +import 'time_alarm.dart'; + abstract class Alarm { String get id; + Map toJson(); + + factory Alarm.fromJson(Map json) { + if (json.containsKey('triggerAt')) { + return TimeAlarm.fromJson(json); + } + + if (json.containsKey('location')) { + return LocationAlarm.fromJson(json); + } + + throw ArgumentError('Unknown alarm type'); + } + + @override + bool operator ==(Object other) { + if (other is! Alarm) return false; + + return hashCode == other.hashCode; + } + + @override + int get hashCode => id.hashCode; } diff --git a/lib/model/location_alarm.dart b/lib/model/location_alarm.dart index b97b388..bb1b924 100644 --- a/lib/model/location_alarm.dart +++ b/lib/model/location_alarm.dart @@ -23,6 +23,7 @@ class LocationAlarm implements Alarm { ); } + @override Map toJson() { return { 'id': id, diff --git a/lib/model/time_alarm.dart b/lib/model/time_alarm.dart index 39108f7..04a8f5e 100644 --- a/lib/model/time_alarm.dart +++ b/lib/model/time_alarm.dart @@ -15,6 +15,7 @@ class TimeAlarm implements Alarm { ); } + @override Map toJson() { return {'id': id, 'triggerAt': triggerAt.toIso8601String()}; }