always schedule just the next reminder

This commit is contained in:
tibbi 2017-02-06 22:20:05 +01:00
parent b8c2103431
commit 23d802be10
2 changed files with 23 additions and 17 deletions

View File

@ -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)
} }

View File

@ -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)