Trigger overdue notifications immediately

pull/3035/head^2
Alex Baker 1 year ago
parent cf6ff06843
commit ac00a81751

@ -19,21 +19,20 @@ import androidx.work.WorkInfo
import androidx.work.WorkRequest import androidx.work.WorkRequest
import androidx.work.Worker import androidx.work.Worker
import androidx.work.workDataOf import androidx.work.workDataOf
import com.todoroo.andlib.utility.AndroidUtilities
import com.todoroo.andlib.utility.AndroidUtilities.atLeastS import com.todoroo.andlib.utility.AndroidUtilities.atLeastS
import org.tasks.data.entity.Task
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.tasks.BuildConfig import org.tasks.BuildConfig
import org.tasks.R import org.tasks.R
import org.tasks.data.OpenTaskDao
import org.tasks.data.dao.CaldavDao
import org.tasks.data.entity.CaldavAccount import org.tasks.data.entity.CaldavAccount
import org.tasks.data.entity.CaldavAccount.Companion.TYPE_CALDAV import org.tasks.data.entity.CaldavAccount.Companion.TYPE_CALDAV
import org.tasks.data.entity.CaldavAccount.Companion.TYPE_ETEBASE import org.tasks.data.entity.CaldavAccount.Companion.TYPE_ETEBASE
import org.tasks.data.entity.CaldavAccount.Companion.TYPE_GOOGLE_TASKS import org.tasks.data.entity.CaldavAccount.Companion.TYPE_GOOGLE_TASKS
import org.tasks.data.entity.CaldavAccount.Companion.TYPE_TASKS import org.tasks.data.entity.CaldavAccount.Companion.TYPE_TASKS
import org.tasks.data.dao.CaldavDao
import org.tasks.data.OpenTaskDao
import org.tasks.data.entity.Place import org.tasks.data.entity.Place
import org.tasks.data.entity.Task
import org.tasks.date.DateTimeUtils.midnight import org.tasks.date.DateTimeUtils.midnight
import org.tasks.date.DateTimeUtils.newDateTime import org.tasks.date.DateTimeUtils.newDateTime
import org.tasks.jobs.DriveUploader.Companion.EXTRA_PURGE import org.tasks.jobs.DriveUploader.Companion.EXTRA_PURGE
@ -155,13 +154,7 @@ class WorkManagerImpl(
override fun scheduleNotification(scheduledTime: Long) { override fun scheduleNotification(scheduledTime: Long) {
val time = max(currentTimeMillis(), scheduledTime) val time = max(currentTimeMillis(), scheduledTime)
if (time < currentTimeMillis()) { if (time < currentTimeMillis()) {
triggerNotifications(expedited = true)
val intent = notificationIntent
if (AndroidUtilities.atLeastOreo()) {
context.startForegroundService(intent)
} else {
context.startService(intent)
}
} else { } else {
val pendingIntent = notificationPendingIntent val pendingIntent = notificationPendingIntent
if (!atLeastS() || alarmManager.canScheduleExactAlarms()) { if (!atLeastS() || alarmManager.canScheduleExactAlarms()) {
@ -244,14 +237,11 @@ class WorkManagerImpl(
} }
} }
private val notificationIntent: Intent
get() = Intent(context, NotificationReceiver::class.java)
private val notificationPendingIntent: PendingIntent private val notificationPendingIntent: PendingIntent
get() = PendingIntent.getBroadcast( get() = PendingIntent.getBroadcast(
context, context,
0, 0,
notificationIntent, Intent(context, NotificationReceiver::class.java),
PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
) )

Loading…
Cancel
Save