From 10af5280a3dfbac415e54481164dd08e1e1b8a48 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Wed, 8 May 2024 22:59:15 -0500 Subject: [PATCH] Fix random reminders --- .../todoroo/astrid/alarms/AlarmCalculator.kt | 3 +-- .../java/org/tasks/jobs/NotificationWork.kt | 27 +++++++++---------- .../java/org/tasks/jobs/WorkManagerImpl.kt | 2 +- .../notifications/NotificationManager.kt | 11 -------- 4 files changed, 15 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/com/todoroo/astrid/alarms/AlarmCalculator.kt b/app/src/main/java/com/todoroo/astrid/alarms/AlarmCalculator.kt index 65401572a..db741a4fb 100644 --- a/app/src/main/java/com/todoroo/astrid/alarms/AlarmCalculator.kt +++ b/app/src/main/java/com/todoroo/astrid/alarms/AlarmCalculator.kt @@ -82,8 +82,7 @@ class AlarmCalculator( } `when` += (reminderPeriod * (0.85f + 0.3f * random.nextFloat())).toLong() if (`when` < DateUtilities.now()) { - `when` = - DateUtilities.now() + ((0.5f + 6 * random.nextFloat()) * DateUtilities.ONE_HOUR).toLong() + `when` = Math.max(DateUtilities.now(), task.hideUntil) } return `when` } diff --git a/app/src/main/java/org/tasks/jobs/NotificationWork.kt b/app/src/main/java/org/tasks/jobs/NotificationWork.kt index 1c5df49ad..7a51f5d22 100644 --- a/app/src/main/java/org/tasks/jobs/NotificationWork.kt +++ b/app/src/main/java/org/tasks/jobs/NotificationWork.kt @@ -39,22 +39,20 @@ class NotificationWork @AssistedInject constructor( } repeat(3) { val (overdue, future) = alarmService.getAlarms() - if (overdue.isNotEmpty()) { - overdue - .sortedBy { it.time } - .also { alarms -> - alarms - .filter { it.type == TYPE_SNOOZE } - .map { it.id } - .let { alarmDao.deleteByIds(it) } - } - .map { it.toNotification() } - .let { notifier.triggerNotifications(it) } - } else { - nextAlarm = future.minOfOrNull { it.time } ?: 0 - Timber.d("nextAlarm=${nextAlarm.toDateTime()}") + nextAlarm = future.minOfOrNull { it.time } ?: 0 + if (overdue.isEmpty()) { return Result.success() } + overdue + .sortedBy { it.time } + .also { alarms -> + alarms + .filter { it.type == TYPE_SNOOZE } + .map { it.id } + .let { alarmDao.deleteByIds(it) } + } + .map { it.toNotification() } + .let { notifier.triggerNotifications(it) } } firebase.reportException(IllegalStateException("Should have returned already")) return Result.failure() @@ -62,6 +60,7 @@ class NotificationWork @AssistedInject constructor( override suspend fun scheduleNext() { if (nextAlarm > 0) { + Timber.d("nextAlarm=${nextAlarm.toDateTime()}") workManager.scheduleNotification(preferences.adjustForQuietHours(nextAlarm)) } } diff --git a/app/src/main/java/org/tasks/jobs/WorkManagerImpl.kt b/app/src/main/java/org/tasks/jobs/WorkManagerImpl.kt index 696561320..a5ffde63f 100644 --- a/app/src/main/java/org/tasks/jobs/WorkManagerImpl.kt +++ b/app/src/main/java/org/tasks/jobs/WorkManagerImpl.kt @@ -227,7 +227,7 @@ class WorkManagerImpl( if (expedited) { builder.setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST) } - Timber.d("$key: ${DateTimeUtils.printTimestamp(delay)} (${DateTimeUtils.printDuration(delay)})") + Timber.d("$key: expedited=$expedited ${DateTimeUtils.printTimestamp(delay)} (${DateTimeUtils.printDuration(delay)})") enqueue(workManager.beginUniqueWork(key, REPLACE, builder.build())) } diff --git a/app/src/main/java/org/tasks/notifications/NotificationManager.kt b/app/src/main/java/org/tasks/notifications/NotificationManager.kt index 4ac221425..8db42ca41 100644 --- a/app/src/main/java/org/tasks/notifications/NotificationManager.kt +++ b/app/src/main/java/org/tasks/notifications/NotificationManager.kt @@ -11,7 +11,6 @@ import com.todoroo.astrid.core.BuiltInFilterExposer import dagger.hilt.android.qualifiers.ApplicationContext import org.tasks.LocalBroadcastManager import org.tasks.R -import org.tasks.Strings.isNullOrEmpty import org.tasks.data.Alarm import org.tasks.data.LocationDao import org.tasks.data.TaskDao @@ -296,16 +295,6 @@ class NotificationManager @Inject constructor( return null } - // new task edit in progress - if (isNullOrEmpty(task.title)) { - return null - } - - // it's hidden - don't sound, don't delete - if (task.isHidden && type == Alarm.TYPE_RANDOM) { - return null - } - // read properties val markdown = markdownProvider.markdown(force = true) val taskTitle = markdown.toMarkdown(task.title)