diff --git a/app/src/main/java/org/tasks/Tasks.kt b/app/src/main/java/org/tasks/Tasks.kt index 70b7f6f1c..43017396f 100644 --- a/app/src/main/java/org/tasks/Tasks.kt +++ b/app/src/main/java/org/tasks/Tasks.kt @@ -95,7 +95,6 @@ class Tasks : Application(), Configuration.Provider { NotificationSchedulerIntentService.enqueueWork(context) workManager.get().apply { updateBackgroundSync() - scheduleMidnightRefresh() scheduleBackup() scheduleConfigRefresh() updatePurchases() diff --git a/app/src/main/java/org/tasks/data/TaskDao.kt b/app/src/main/java/org/tasks/data/TaskDao.kt index 82fbd615c..083ac0002 100644 --- a/app/src/main/java/org/tasks/data/TaskDao.kt +++ b/app/src/main/java/org/tasks/data/TaskDao.kt @@ -42,7 +42,7 @@ FROM ( WHERE completed = 0 AND deleted = 0 ) """) - abstract suspend fun nextRefresh(now: Long = System.currentTimeMillis()): Long + abstract suspend fun nextRefresh(now: Long = now()): Long @Query("SELECT * FROM tasks WHERE _id = :id LIMIT 1") abstract suspend fun fetch(id: Long): Task? diff --git a/app/src/main/java/org/tasks/jobs/MidnightRefreshWork.kt b/app/src/main/java/org/tasks/jobs/MidnightRefreshWork.kt deleted file mode 100644 index f479505cd..000000000 --- a/app/src/main/java/org/tasks/jobs/MidnightRefreshWork.kt +++ /dev/null @@ -1,25 +0,0 @@ -package org.tasks.jobs - -import android.content.Context -import androidx.hilt.work.HiltWorker -import androidx.work.WorkerParameters -import dagger.assisted.Assisted -import dagger.assisted.AssistedInject -import org.tasks.LocalBroadcastManager -import org.tasks.analytics.Firebase - -@HiltWorker -class MidnightRefreshWork @AssistedInject constructor( - @Assisted context: Context, - @Assisted workerParams: WorkerParameters, - firebase: Firebase, - private val workManager: WorkManager, - private val localBroadcastManager: LocalBroadcastManager) : RepeatingWorker(context, workerParams, firebase) { - - override suspend fun run(): Result { - localBroadcastManager.broadcastRefresh() - return Result.success() - } - - override suspend fun scheduleNext() = workManager.scheduleMidnightRefresh() -} \ No newline at end of file diff --git a/app/src/main/java/org/tasks/jobs/RefreshWork.kt b/app/src/main/java/org/tasks/jobs/RefreshWork.kt index 05682560b..3020a79c8 100644 --- a/app/src/main/java/org/tasks/jobs/RefreshWork.kt +++ b/app/src/main/java/org/tasks/jobs/RefreshWork.kt @@ -7,6 +7,9 @@ import dagger.assisted.Assisted import dagger.assisted.AssistedInject import org.tasks.LocalBroadcastManager import org.tasks.analytics.Firebase +import org.tasks.data.TaskDao +import org.tasks.date.DateTimeUtils +import kotlin.math.min @HiltWorker class RefreshWork @AssistedInject constructor( @@ -15,6 +18,7 @@ class RefreshWork @AssistedInject constructor( firebase: Firebase, private val localBroadcastManager: LocalBroadcastManager, private val workManager: WorkManager, + private val taskDao: TaskDao, ) : RepeatingWorker(context, workerParams, firebase) { override suspend fun run(): Result { @@ -22,5 +26,6 @@ class RefreshWork @AssistedInject constructor( return Result.success() } - override suspend fun scheduleNext() = workManager.scheduleRefresh() + override suspend fun scheduleNext() = + workManager.scheduleRefresh(min(taskDao.nextRefresh(), DateTimeUtils.midnight())) } \ No newline at end of file diff --git a/app/src/main/java/org/tasks/jobs/WorkManager.kt b/app/src/main/java/org/tasks/jobs/WorkManager.kt index c6e1bf2c0..0a41e1cbf 100644 --- a/app/src/main/java/org/tasks/jobs/WorkManager.kt +++ b/app/src/main/java/org/tasks/jobs/WorkManager.kt @@ -1,6 +1,7 @@ package org.tasks.jobs import android.net.Uri +import com.todoroo.andlib.utility.DateUtilities.now import com.todoroo.astrid.data.Task import org.tasks.BuildConfig import org.tasks.data.CaldavAccount @@ -20,9 +21,7 @@ interface WorkManager { fun updateBackgroundSync() - suspend fun scheduleRefresh() - - fun scheduleMidnightRefresh() + suspend fun scheduleRefresh(timestamp: Long = now() + 5_000) fun scheduleNotification(scheduledTime: Long) @@ -40,7 +39,6 @@ interface WorkManager { val REMOTE_CONFIG_INTERVAL_HOURS = if (BuildConfig.DEBUG) 1 else 12.toLong() const val TAG_BACKUP = "tag_backup" const val TAG_REFRESH = "tag_refresh" - const val TAG_MIDNIGHT_REFRESH = "tag_midnight_refresh" const val TAG_SYNC = "tag_sync" const val TAG_BACKGROUND_SYNC = "tag_background_sync" const val TAG_REMOTE_CONFIG = "tag_remote_config" diff --git a/app/src/main/java/org/tasks/jobs/WorkManagerImpl.kt b/app/src/main/java/org/tasks/jobs/WorkManagerImpl.kt index 9491e1f2a..72ee9329c 100644 --- a/app/src/main/java/org/tasks/jobs/WorkManagerImpl.kt +++ b/app/src/main/java/org/tasks/jobs/WorkManagerImpl.kt @@ -45,7 +45,6 @@ import org.tasks.jobs.SyncWork.Companion.EXTRA_IMMEDIATE import org.tasks.jobs.WorkManager.Companion.REMOTE_CONFIG_INTERVAL_HOURS import org.tasks.jobs.WorkManager.Companion.TAG_BACKGROUND_SYNC import org.tasks.jobs.WorkManager.Companion.TAG_BACKUP -import org.tasks.jobs.WorkManager.Companion.TAG_MIDNIGHT_REFRESH import org.tasks.jobs.WorkManager.Companion.TAG_MIGRATE_LOCAL import org.tasks.jobs.WorkManager.Companion.TAG_REFRESH import org.tasks.jobs.WorkManager.Companion.TAG_REMOTE_CONFIG @@ -140,11 +139,8 @@ class WorkManagerImpl( } } - override suspend fun scheduleRefresh() = - enqueueUnique(TAG_REFRESH, RefreshWork::class.java, taskDao.nextRefresh()) - - override fun scheduleMidnightRefresh() = - enqueueUnique(TAG_MIDNIGHT_REFRESH, MidnightRefreshWork::class.java, midnight()) + override suspend fun scheduleRefresh(timestamp: Long) = + enqueueUnique(TAG_REFRESH, RefreshWork::class.java, timestamp) override fun scheduleNotification(scheduledTime: Long) { val time = max(DateUtilities.now(), scheduledTime)