Skip to content

Commit fb736bd

Browse files
committed
fix: alarms can't be disabled (closes #387)
1 parent eb3275f commit fb736bd

File tree

5 files changed

+25
-17
lines changed

5 files changed

+25
-17
lines changed

app/src/main/java/com/bnyro/clock/domain/usecase/CreateUpdateDeleteAlarmUseCase.kt

-2
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,11 @@ class CreateUpdateDeleteAlarmUseCase(
1010
private val alarmRepository: AlarmRepository
1111
) {
1212
suspend fun createAlarm(alarm: Alarm) {
13-
alarm.enabled = true
1413
AlarmHelper.enqueue(context, alarm)
1514
alarmRepository.addAlarm(alarm)
1615
}
1716

1817
suspend fun updateAlarm(alarm: Alarm) {
19-
alarm.enabled = true
2018
AlarmHelper.enqueue(context, alarm)
2119
alarmRepository.updateAlarm(alarm)
2220
}

app/src/main/java/com/bnyro/clock/presentation/screens/alarm/AlarmScreen.kt

+19-10
Original file line numberDiff line numberDiff line change
@@ -108,17 +108,26 @@ fun AlarmScreen(
108108
}
109109
}
110110

111-
items(items = alarms, key = { it.id }) {
112-
AlarmItem(it, onClick = { alarm ->
113-
onAlarm.invoke(alarm.id)
114-
}, onDeleteAlarm = { alarm ->
115-
alarmModel.deleteAlarm(alarm)
116-
}, onUpdateAlarm = { alarm ->
117-
alarmModel.updateAlarm(alarm)
118-
if (alarm.enabled) {
119-
alarmModel.createToast(alarm, context)
111+
items(
112+
items = alarms,
113+
key = { it.id.toString() + "-" + it.enabled }
114+
) {
115+
AlarmItem(
116+
alarm = it,
117+
onClick = { alarm ->
118+
onAlarm.invoke(alarm.id)
119+
},
120+
onDeleteAlarm = { alarm ->
121+
alarmModel.deleteAlarm(alarm)
122+
},
123+
onUpdateAlarm = { alarm ->
124+
alarmModel.updateAlarm(alarm)
125+
126+
if (alarm.enabled) {
127+
alarmModel.createToast(alarm, context)
128+
}
120129
}
121-
})
130+
)
122131
}
123132

124133
item {

app/src/main/java/com/bnyro/clock/presentation/screens/alarm/model/AlarmModel.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class AlarmModel(application: Application) : AndroidViewModel(application) {
3535
var showFilter by mutableStateOf(false)
3636
var showSortOrder by mutableStateOf(false)
3737
val filters = MutableStateFlow(AlarmFilters())
38-
val sortOrder = MutableStateFlow(AlarmSortOrder.HOUR_OF_DAY)
38+
private val sortOrder = MutableStateFlow(AlarmSortOrder.HOUR_OF_DAY)
3939

4040
val alarms: StateFlow<List<Alarm>> =
4141
combine(alarmRepository.getAlarmsStream(), filters, sortOrder) { items, filter, sortOrder ->

app/src/main/java/com/bnyro/clock/presentation/screens/alarmpicker/AlarmPickerScreen.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ fun AlarmPickerScreen(onNavigateBack: () -> Unit) {
1515
currentAlarm = viewModel.alarm,
1616
onSave = { alarm ->
1717
if (alarm.id == 0L) {
18-
//Create New Alarm
19-
viewModel.createAlarm(alarm)
18+
// Create New Alarm and enable by default
19+
viewModel.createAlarm(alarm.copy(enabled = true))
2020
viewModel.createToast(alarm, context)
2121
} else {
22-
//Update Alarm
23-
viewModel.updateAlarm(alarm)
22+
// Update Alarm and enable automatically
23+
viewModel.updateAlarm(alarm.copy(enabled = true))
2424
viewModel.createToast(alarm, context)
2525
}
2626
onNavigateBack.invoke()

app/src/main/java/com/bnyro/clock/presentation/screens/alarmpicker/model/AlarmPickerModel.kt

+1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ class AlarmPickerModel(application: Application, savedStateHandle: SavedStateHan
5757
(AlarmHelper.getAlarmTime(alarm) - System.currentTimeMillis())
5858
val formattedDuration =
5959
TimeHelper.durationToFormatted(context, millisRemainingForAlarm.milliseconds)
60+
6061
Toast.makeText(
6162
context,
6263
context.resources.getString(R.string.alarm_will_play, formattedDuration),

0 commit comments

Comments
 (0)