Fix random reminders

pull/2884/head
Alex Baker 3 weeks ago
parent 8c0f7b952d
commit 10af5280a3

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

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

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

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

Loading…
Cancel
Save