Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit f3878d3

Browse files
committedJan 31, 2023
Fix bug
1 parent 8f6ae58 commit f3878d3

File tree

4 files changed

+59
-25
lines changed

4 files changed

+59
-25
lines changed
 

‎app/src/main/java/com/anafthdev/remindme/common/RemindMeAlarmManager.kt

+15-2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import com.anafthdev.remindme.extension.calendarDayOfWeekFromRemindMeDayOfWeek
1313
import com.anafthdev.remindme.extension.calendarDayOfWeekToRemindMeDayOfWeek
1414
import com.anafthdev.remindme.extension.next
1515
import com.anafthdev.remindme.receiver.ReminderReceiver
16+
import timber.log.Timber
1617
import java.util.Calendar
1718
import javax.inject.Inject
1819

@@ -84,27 +85,39 @@ class RemindMeAlarmManager @Inject constructor(
8485

8586
when {
8687
System.currentTimeMillis() < timeInMillis -> {}
88+
reminder.repeatOnDays.isEmpty() -> {}
8789
reminder.repeatOnDays.size == DayOfWeek.values().size -> {
8890
add(Calendar.DAY_OF_MONTH, 1)
8991
}
9092
else -> {
9193
val currentDay = calendarDayOfWeekToRemindMeDayOfWeek(get(Calendar.DAY_OF_WEEK))
94+
var nextWeek = false
9295
val nextDay = run {
9396
var day = currentDay
9497

9598
do {
9699
day = day.next()
97100

98101
if (day in reminder.repeatOnDays) {
102+
Timber.i("return day: ${day.name}")
103+
104+
nextWeek = currentDay == day
105+
99106
return@run day
100107
}
101108
} while (day !in reminder.repeatOnDays)
102109

103-
return@run currentDay
110+
return@run currentDay // Default value
104111
}
105112

106-
if (nextDay.ordinal < currentDay.ordinal) {
113+
Timber.i("cur day: $currentDay, next day: $nextDay")
114+
115+
if (nextDay.ordinal < currentDay.ordinal || nextWeek) {
116+
// Jika hari selanjutnya < hari sekarang
117+
// Berarti next triggernya minggu besok
107118
add(Calendar.WEEK_OF_MONTH, 1)
119+
120+
Timber.i("trigger next week!")
108121
}
109122

110123
set(Calendar.DAY_OF_WEEK, calendarDayOfWeekFromRemindMeDayOfWeek(nextDay))

‎app/src/main/java/com/anafthdev/remindme/receiver/ReminderReceiver.kt

+35-21
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import com.anafthdev.remindme.extension.calendarDayOfWeekFromRemindMeDayOfWeek
1414
import com.anafthdev.remindme.extension.calendarDayOfWeekToRemindMeDayOfWeek
1515
import com.anafthdev.remindme.extension.next
1616
import dagger.hilt.android.AndroidEntryPoint
17+
import timber.log.Timber
1718
import java.util.Calendar
1819
import javax.inject.Inject
1920

@@ -36,31 +37,44 @@ class ReminderReceiver: BroadcastReceiver() {
3637
} ?: Reminder.Null
3738

3839
val nextTrigger = Calendar.getInstance().apply {
39-
if (reminder.repeatOnDays.size == DayOfWeek.values().size) {
40-
add(Calendar.DAY_OF_MONTH, 1)
41-
} else {
42-
val currentDay = calendarDayOfWeekToRemindMeDayOfWeek(get(Calendar.DAY_OF_WEEK))
43-
val nextDay = run {
44-
var day = currentDay
40+
when {
41+
reminder.repeatOnDays.isEmpty() -> {}
42+
reminder.repeatOnDays.size == DayOfWeek.values().size -> {
43+
add(Calendar.DAY_OF_MONTH, 1)
44+
}
45+
else -> {
46+
val currentDay = calendarDayOfWeekToRemindMeDayOfWeek(get(Calendar.DAY_OF_WEEK))
47+
var nextWeek = false
48+
val nextDay = run {
49+
var day = currentDay
50+
51+
do {
52+
day = day.next()
53+
54+
if (day in reminder.repeatOnDays) {
55+
Timber.i("return day: ${day.name}")
56+
57+
nextWeek = currentDay == day
58+
59+
return@run day
60+
}
61+
} while (day !in reminder.repeatOnDays)
62+
63+
return@run currentDay // Default value
64+
}
4565

46-
do {
47-
day = day.next()
66+
Timber.i("cur day: $currentDay, next day: $nextDay")
67+
68+
if (nextDay.ordinal < currentDay.ordinal || nextWeek) {
69+
// Jika hari selanjutnya < hari sekarang
70+
// Berarti next triggernya minggu besok
71+
add(Calendar.WEEK_OF_MONTH, 1)
4872

49-
if (day in reminder.repeatOnDays) {
50-
return@run day
51-
}
52-
} while (day !in reminder.repeatOnDays)
73+
Timber.i("trigger next week!")
74+
}
5375

54-
return@run currentDay // Default value
55-
}
56-
57-
if (nextDay.ordinal < currentDay.ordinal) {
58-
// Jika hari selanjutnya < hari sekarang
59-
// Berarti next triggernya minggu besok
60-
add(Calendar.WEEK_OF_MONTH, 1)
76+
set(Calendar.DAY_OF_WEEK, calendarDayOfWeekFromRemindMeDayOfWeek(nextDay))
6177
}
62-
63-
set(Calendar.DAY_OF_WEEK, calendarDayOfWeekFromRemindMeDayOfWeek(nextDay))
6478
}
6579

6680
set(Calendar.HOUR_OF_DAY, reminder.hour)

‎app/src/main/java/com/anafthdev/remindme/ui/main/MainScreen.kt

+2
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,8 @@ fun RemindMeReminderDetail(
406406

407407
add(message to ReminderMessageType.Fixed)
408408
}
409+
410+
viewModel.saveReminder()
409411
},
410412
modifier = reminderMessageModifier
411413
.imePadding()

‎app/src/main/java/com/anafthdev/remindme/ui/remind_me/RemindMeViewModel.kt

+7-2
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,11 @@ class RemindMeViewModel @Inject constructor(
6767
}
6868

6969
fun updateReminder(reminder: Reminder) {
70-
if (reminder.isActive) remindMeAlarmManager.validateAndStart(reminder)
71-
else remindMeAlarmManager.cancelReminder(reminder)
70+
if (reminder.isActive) {
71+
if (reminder.repeatOnDays.isNotEmpty()) {
72+
remindMeAlarmManager.validateAndStart(reminder)
73+
}
74+
} else remindMeAlarmManager.cancelReminder(reminder)
7275

7376
viewModelScope.launch(Dispatchers.IO) {
7477
reminderRepository.updateReminder(reminder.toReminderDb())
@@ -102,6 +105,8 @@ class RemindMeViewModel @Inject constructor(
102105

103106
if (deleteCurrentReminder) {
104107
_uiState.value.selectedReminder?.let {
108+
remindMeAlarmManager.cancelReminder(it)
109+
105110
_uiState.value = _uiState.value.copy(
106111
selectedReminder = null
107112
)

0 commit comments

Comments
 (0)
Please sign in to comment.