always schedule just the next reminder
This commit is contained in:
parent
b8c2103431
commit
23d802be10
|
@ -45,21 +45,29 @@ fun Context.scheduleNextEventReminder(event: Event) {
|
||||||
if (event.getReminders().isEmpty())
|
if (event.getReminders().isEmpty())
|
||||||
return
|
return
|
||||||
|
|
||||||
var startTS = event.startTS - event.reminder1Minutes * 60
|
var nextTS = Int.MAX_VALUE
|
||||||
var newTS = startTS
|
val reminderSeconds = event.getReminders().reversed().map { it * 60 }
|
||||||
|
|
||||||
|
reminderSeconds.forEach {
|
||||||
|
var startTS = event.startTS - it
|
||||||
|
val now = System.currentTimeMillis() / 1000 + 5
|
||||||
if (event.repeatInterval == DAY || event.repeatInterval == WEEK || event.repeatInterval == BIWEEK) {
|
if (event.repeatInterval == DAY || event.repeatInterval == WEEK || event.repeatInterval == BIWEEK) {
|
||||||
while (startTS < System.currentTimeMillis() / 1000 + 5) {
|
while (startTS < now) {
|
||||||
startTS += event.repeatInterval
|
startTS += event.repeatInterval
|
||||||
}
|
}
|
||||||
newTS = startTS
|
nextTS = Math.min(nextTS, startTS)
|
||||||
} else if (event.repeatInterval == MONTH) {
|
} else if (event.repeatInterval == MONTH) {
|
||||||
newTS = getNewTS(startTS, true)
|
nextTS = Math.min(nextTS, getNewTS(startTS, true))
|
||||||
} else if (event.repeatInterval == YEAR) {
|
} else if (event.repeatInterval == YEAR) {
|
||||||
newTS = getNewTS(startTS, false)
|
nextTS = Math.min(nextTS, getNewTS(startTS, false))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newTS != 0 && (event.repeatLimit == 0 || event.repeatLimit > newTS))
|
if (nextTS == 0)
|
||||||
scheduleEventIn(newTS, event)
|
return
|
||||||
|
|
||||||
|
if (event.repeatLimit == 0 || event.repeatLimit > nextTS)
|
||||||
|
scheduleEventIn(nextTS, event)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getNewTS(ts: Int, isMonthly: Boolean): Int {
|
private fun getNewTS(ts: Int, isMonthly: Boolean): Int {
|
||||||
|
@ -71,9 +79,7 @@ private fun getNewTS(ts: Int, isMonthly: Boolean): Int {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Context.scheduleReminder(event: Event) {
|
fun Context.scheduleReminder(event: Event) {
|
||||||
if (event.getRemindersCount() == 0)
|
if (event.getReminders().isNotEmpty())
|
||||||
return
|
|
||||||
|
|
||||||
scheduleNextEventReminder(event)
|
scheduleNextEventReminder(event)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ class NotificationReceiver : BroadcastReceiver() {
|
||||||
return
|
return
|
||||||
|
|
||||||
val event = DBHelper(context).getEvent(id)
|
val event = DBHelper(context).getEvent(id)
|
||||||
if (event == null || event.getRemindersCount() == 0)
|
if (event == null || event.getReminders().isEmpty())
|
||||||
return
|
return
|
||||||
|
|
||||||
val pendingIntent = getPendingIntent(context, event)
|
val pendingIntent = getPendingIntent(context, event)
|
||||||
|
|
Loading…
Reference in New Issue