Skip to content

Commit 117f65d

Browse files
authored
Merge pull request #249 from YAPP-Github/bugfix/#248-alarm-one-time-reschedule
[BUGFIX] ๋น„๋ฐ˜๋ณต ์•Œ๋žŒ์ด ํ•ด์ œ ํ›„์—๋„ ๋‹ค์Œ๋‚  ์˜ˆ์•ฝ๋˜๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ
2 parents a7723cd + 57a42df commit 117f65d

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

โ€Žcore/alarm/src/main/java/com/yapp/alarm/AndroidAlarmScheduler.ktโ€Ž

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.yapp.alarm
22

33
import android.app.AlarmManager
44
import android.app.Application
5+
import android.util.Log
56
import com.yapp.alarm.pendingIntent.schedule.createAlarmReceiverPendingIntentForSchedule
67
import com.yapp.alarm.pendingIntent.schedule.createAlarmReceiverPendingIntentForUnSchedule
78
import com.yapp.domain.model.Alarm
@@ -16,6 +17,15 @@ class AndroidAlarmScheduler @Inject constructor(
1617
private val alarmTimeCalculator: AlarmTimeCalculator,
1718
) : AlarmScheduler {
1819

20+
private fun logSchedule(tag: String, alarm: Alarm, triggerMillis: Long, extra: String = "") {
21+
Log.d("ScheduleTrace", "scheduleAlarm Called", Throwable())
22+
Log.d(
23+
"AlarmSchedule",
24+
"[$tag] id=${alarm.id}, repeatDays=${alarm.repeatDays}, " +
25+
"time=${java.time.Instant.ofEpochMilli(triggerMillis)} $extra",
26+
)
27+
}
28+
1929
override fun scheduleAlarm(alarm: Alarm) {
2030
val selectedDays = alarm.repeatDays.toAlarmDays()
2131

@@ -31,7 +41,7 @@ class AndroidAlarmScheduler @Inject constructor(
3141
private fun setRepeatingAlarm(day: AlarmDay, alarm: Alarm) {
3242
val triggerMillis = alarmTimeCalculator.calculateNextRepeatingTimeMillis(alarm, day)
3343
val pendingIntent = createAlarmReceiverPendingIntentForSchedule(app, alarm, day)
34-
44+
logSchedule("REPEAT", alarm, triggerMillis, "day=$day")
3545
alarmManager.setExactAndAllowWhileIdle(
3646
AlarmManager.RTC_WAKEUP,
3747
triggerMillis,
@@ -42,7 +52,7 @@ class AndroidAlarmScheduler @Inject constructor(
4252
private fun setNonRepeatingAlarm(alarm: Alarm) {
4353
val triggerMillis = alarmTimeCalculator.calculateNonRepeatingTimeMillis(alarm)
4454
val pendingIntent = createAlarmReceiverPendingIntentForSchedule(app, alarm)
45-
55+
logSchedule("NON_REPEAT", alarm, triggerMillis)
4656
alarmManager.setExactAndAllowWhileIdle(
4757
AlarmManager.RTC_WAKEUP,
4858
triggerMillis,
@@ -53,7 +63,7 @@ class AndroidAlarmScheduler @Inject constructor(
5363
fun rescheduleUpcomingWeeklyAlarm(alarm: Alarm, day: AlarmDay) {
5464
val triggerMillis = alarmTimeCalculator.calculateNextWeeklyRescheduledTimeMillis(alarm, day)
5565
val pendingIntent = createAlarmReceiverPendingIntentForSchedule(app, alarm, day)
56-
66+
logSchedule("RESCHEDULE_WEEKLY", alarm, triggerMillis, "day=$day")
5767
alarmManager.setExactAndAllowWhileIdle(
5868
AlarmManager.RTC_WAKEUP,
5969
triggerMillis,

โ€Žcore/alarm/src/main/java/com/yapp/alarm/receivers/RescheduleAlarmReceiver.ktโ€Ž

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import com.yapp.domain.usecase.AlarmUseCase
88
import dagger.hilt.android.AndroidEntryPoint
99
import kotlinx.coroutines.CoroutineScope
1010
import kotlinx.coroutines.Dispatchers
11+
import kotlinx.coroutines.flow.first
1112
import kotlinx.coroutines.launch
1213
import javax.inject.Inject
1314

@@ -31,11 +32,10 @@ class RescheduleAlarmReceiver : BroadcastReceiver() {
3132

3233
private fun rescheduleAlarm() {
3334
CoroutineScope(Dispatchers.IO).launch {
34-
alarmUseCase.getAllAlarms().collect { alarms ->
35-
alarms.forEach { alarm ->
36-
androidAlarmScheduler.scheduleAlarm(alarm)
37-
}
38-
}
35+
val alarms = alarmUseCase.getAllAlarms().first()
36+
alarms
37+
.filter { it.isAlarmActive }
38+
.forEach { alarm -> androidAlarmScheduler.scheduleAlarm(alarm) }
3939
}
4040
}
4141
}

0 commit comments

Comments
ย (0)