Skip to content

Commit cb54647

Browse files
authored
Fix: One-time alarms remain enabled after ringing (#782)
* changes1 * changes2
1 parent 760d689 commit cb54647

File tree

3 files changed

+27
-20
lines changed

3 files changed

+27
-20
lines changed

lib/app/modules/alarmRing/controllers/alarm_ring_controller.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,18 @@ class AlarmControlController extends GetxController {
334334
stream: AudioStream.alarm,
335335
);
336336

337+
338+
if (currentlyRingingAlarm.value.days.every((element) => element == false)) {
339+
currentlyRingingAlarm.value.isEnabled = false;
340+
if (currentlyRingingAlarm.value.isSharedAlarmEnabled == false) {
341+
await IsarDb.updateAlarm(currentlyRingingAlarm.value);
342+
} else {
343+
await FirestoreDb.updateAlarm(
344+
currentlyRingingAlarm.value.ownerId,
345+
currentlyRingingAlarm.value,
346+
);
347+
}
348+
}
337349

338350
_subscription.cancel();
339351
_currentTimeTimer?.cancel();

lib/app/modules/alarmRing/views/alarm_ring_view.dart

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import 'package:get/get.dart';
44
import 'package:ultimate_alarm_clock/app/modules/settings/controllers/theme_controller.dart';
55
import 'package:ultimate_alarm_clock/app/utils/constants.dart';
66
import 'package:ultimate_alarm_clock/app/utils/utils.dart';
7+
import 'package:ultimate_alarm_clock/app/data/providers/isar_provider.dart';
8+
import 'package:ultimate_alarm_clock/app/data/providers/firestore_provider.dart';
79

810
import '../controllers/alarm_ring_controller.dart';
911

@@ -185,12 +187,24 @@ class AlarmControlView extends GetView<AlarmControlController> {
185187
kprimaryColor,
186188
),
187189
),
188-
onPressed: () {
190+
onPressed: () async {
189191
Utils.hapticFeedback();
190192
if (controller
191193
.currentlyRingingAlarm.value.isGuardian) {
192194
controller.guardianTimer.cancel();
193195
}
196+
197+
if (controller.currentlyRingingAlarm.value.days.every((element) => element == false)) {
198+
controller.currentlyRingingAlarm.value.isEnabled = false;
199+
if (controller.currentlyRingingAlarm.value.isSharedAlarmEnabled == false) {
200+
await IsarDb.updateAlarm(controller.currentlyRingingAlarm.value);
201+
} else {
202+
await FirestoreDb.updateAlarm(
203+
controller.currentlyRingingAlarm.value.ownerId,
204+
controller.currentlyRingingAlarm.value,
205+
);
206+
}
207+
}
194208
if (Utils.isChallengeEnabled(
195209
controller.currentlyRingingAlarm.value,
196210
)) {

lib/app/modules/splashScreen/controllers/splash_screen_controller.dart

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -124,25 +124,6 @@ class SplashScreenController extends GetxController {
124124
.every((element) => element == false)) {
125125
currentlyRingingAlarm.value.isEnabled = false;
126126

127-
if (currentlyRingingAlarm.value.isSharedAlarmEnabled == false) {
128-
IsarDb.updateAlarm(currentlyRingingAlarm.value);
129-
} else {
130-
FirestoreDb.updateAlarm(
131-
currentlyRingingAlarm.value.ownerId,
132-
currentlyRingingAlarm.value,
133-
);
134-
}
135-
} else if (currentlyRingingAlarm.value.isOneTime == true) {
136-
// If the alarm has to repeat on one day, but ring just once,
137-
// we will keep seting its days to false until it will never ring
138-
int currentDay = DateTime.now().weekday - 1;
139-
currentlyRingingAlarm.value.days[currentDay] = false;
140-
141-
if (currentlyRingingAlarm.value.days
142-
.every((element) => element == false)) {
143-
currentlyRingingAlarm.value.isEnabled = false;
144-
}
145-
146127
if (currentlyRingingAlarm.value.isSharedAlarmEnabled == false) {
147128
IsarDb.updateAlarm(currentlyRingingAlarm.value);
148129
} else {

0 commit comments

Comments
 (0)