Set work input data with workDataOf

pull/1832/head
Alex Baker 4 years ago
parent 49774a5ec5
commit 7da45d780c

@ -3,7 +3,6 @@ package org.tasks.jobs
import android.content.Context import android.content.Context
import android.net.Uri import android.net.Uri
import androidx.hilt.work.HiltWorker import androidx.hilt.work.HiltWorker
import androidx.work.Data
import androidx.work.WorkerParameters import androidx.work.WorkerParameters
import com.google.api.client.googleapis.json.GoogleJsonResponseException import com.google.api.client.googleapis.json.GoogleJsonResponseException
import com.google.api.services.drive.model.File import com.google.api.services.drive.model.File
@ -107,13 +106,7 @@ class DriveUploader @AssistedInject constructor(
companion object { companion object {
private const val FOLDER_NAME = "Tasks Backups" private const val FOLDER_NAME = "Tasks Backups"
private const val EXTRA_URI = "extra_uri" const val EXTRA_URI = "extra_uri"
private const val EXTRA_PURGE = "extra_purge" const val EXTRA_PURGE = "extra_purge"
fun getInputData(uri: Uri, purge: Boolean) =
Data.Builder()
.putString(EXTRA_URI, uri.toString())
.putBoolean(EXTRA_PURGE, purge)
.build()
} }
} }

@ -7,7 +7,6 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import androidx.work.Constraints import androidx.work.Constraints
import androidx.work.Data
import androidx.work.ExistingPeriodicWorkPolicy import androidx.work.ExistingPeriodicWorkPolicy
import androidx.work.ExistingWorkPolicy.APPEND_OR_REPLACE import androidx.work.ExistingWorkPolicy.APPEND_OR_REPLACE
import androidx.work.ExistingWorkPolicy.REPLACE import androidx.work.ExistingWorkPolicy.REPLACE
@ -18,12 +17,12 @@ import androidx.work.WorkContinuation
import androidx.work.WorkInfo 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 com.todoroo.andlib.utility.AndroidUtilities import com.todoroo.andlib.utility.AndroidUtilities
import com.todoroo.andlib.utility.DateUtilities import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.tasks.BuildConfig
import org.tasks.R import org.tasks.R
import org.tasks.data.CaldavAccount import org.tasks.data.CaldavAccount
import org.tasks.data.CaldavAccount.Companion.TYPE_CALDAV import org.tasks.data.CaldavAccount.Companion.TYPE_CALDAV
@ -35,6 +34,8 @@ import org.tasks.data.OpenTaskDao
import org.tasks.data.Place import org.tasks.data.Place
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_URI
import org.tasks.jobs.MigrateLocalWork.Companion.EXTRA_ACCOUNT import org.tasks.jobs.MigrateLocalWork.Companion.EXTRA_ACCOUNT
import org.tasks.jobs.SyncWork.Companion.EXTRA_BACKGROUND import org.tasks.jobs.SyncWork.Companion.EXTRA_BACKGROUND
import org.tasks.jobs.SyncWork.Companion.EXTRA_IMMEDIATE import org.tasks.jobs.SyncWork.Companion.EXTRA_IMMEDIATE
@ -75,28 +76,25 @@ class WorkManagerImpl constructor(
override fun scheduleRepeat(task: Task) { override fun scheduleRepeat(task: Task) {
enqueue( enqueue(
OneTimeWorkRequest.Builder(AfterSaveWork::class.java) OneTimeWorkRequest.Builder(AfterSaveWork::class.java)
.setInputData(Data.Builder() .setInputData(
.putLong(AfterSaveWork.EXTRA_ID, task.id) AfterSaveWork.EXTRA_ID to task.id,
.putBoolean( AfterSaveWork.EXTRA_SUPPRESS_COMPLETION_SNACKBAR to task.isSuppressRefresh()
AfterSaveWork.EXTRA_SUPPRESS_COMPLETION_SNACKBAR, )
task.isSuppressRefresh() )
)
.build()))
} }
override fun updateCalendar(task: Task) { override fun updateCalendar(task: Task) {
enqueue( enqueue(
OneTimeWorkRequest.Builder(UpdateCalendarWork::class.java) OneTimeWorkRequest.Builder(UpdateCalendarWork::class.java)
.setInputData(Data.Builder() .setInputData(UpdateCalendarWork.EXTRA_ID to task.id)
.putLong(UpdateCalendarWork.EXTRA_ID, task.id) )
.build()))
} }
@SuppressLint("EnqueueWork") @SuppressLint("EnqueueWork")
override fun migrateLocalTasks(caldavAccount: CaldavAccount) { override fun migrateLocalTasks(caldavAccount: CaldavAccount) {
val builder = OneTimeWorkRequest.Builder(MigrateLocalWork::class.java) val builder = OneTimeWorkRequest.Builder(MigrateLocalWork::class.java)
.setInputData(Data.Builder().putString(EXTRA_ACCOUNT, caldavAccount.uuid).build()) .setInputData(EXTRA_ACCOUNT to caldavAccount.uuid)
.setConstraints(networkConstraints) .setConstraints(networkConstraints)
enqueue(workManager.beginUniqueWork(TAG_MIGRATE_LOCAL, APPEND_OR_REPLACE, builder.build())) enqueue(workManager.beginUniqueWork(TAG_MIGRATE_LOCAL, APPEND_OR_REPLACE, builder.build()))
} }
@ -104,11 +102,9 @@ class WorkManagerImpl constructor(
override fun cleanup(ids: Iterable<Long>) { override fun cleanup(ids: Iterable<Long>) {
ids.chunked(MAX_CLEANUP_LENGTH) { ids.chunked(MAX_CLEANUP_LENGTH) {
enqueue( enqueue(
OneTimeWorkRequest.Builder(CleanupWork::class.java) OneTimeWorkRequest.Builder(CleanupWork::class.java)
.setInputData( .setInputData(CleanupWork.EXTRA_TASK_IDS to it.toLongArray())
Data.Builder() )
.putLongArray(CleanupWork.EXTRA_TASK_IDS, it.toLongArray())
.build()))
} }
} }
@ -128,7 +124,7 @@ class WorkManagerImpl constructor(
private suspend fun sync(immediate: Boolean, tag: String, c: Class<out SyncWork>, requireNetwork: Boolean = true) { private suspend fun sync(immediate: Boolean, tag: String, c: Class<out SyncWork>, requireNetwork: Boolean = true) {
Timber.d("sync(immediate = $immediate, $tag, $c, requireNetwork = $requireNetwork)") Timber.d("sync(immediate = $immediate, $tag, $c, requireNetwork = $requireNetwork)")
val builder = OneTimeWorkRequest.Builder(c) val builder = OneTimeWorkRequest.Builder(c)
.setInputData(Data.Builder().putBoolean(EXTRA_IMMEDIATE, immediate).build()) .setInputData(EXTRA_IMMEDIATE to immediate)
if (requireNetwork) { if (requireNetwork) {
builder.setConstraints(networkConstraints) builder.setConstraints(networkConstraints)
} }
@ -153,7 +149,7 @@ class WorkManagerImpl constructor(
} }
enqueue( enqueue(
OneTimeWorkRequest.Builder(ReverseGeocodeWork::class.java) OneTimeWorkRequest.Builder(ReverseGeocodeWork::class.java)
.setInputData(Data.Builder().putLong(ReverseGeocodeWork.PLACE_ID, place.id).build()) .setInputData(ReverseGeocodeWork.PLACE_ID to place.id)
.setConstraints(networkConstraints)) .setConstraints(networkConstraints))
} }
@ -189,7 +185,7 @@ class WorkManagerImpl constructor(
Timber.d("scheduleBackgroundSync($tag, $c, enabled = $enabled)") Timber.d("scheduleBackgroundSync($tag, $c, enabled = $enabled)")
if (enabled) { if (enabled) {
val builder = PeriodicWorkRequest.Builder(c, 1, TimeUnit.HOURS) val builder = PeriodicWorkRequest.Builder(c, 1, TimeUnit.HOURS)
.setInputData(Data.Builder().putBoolean(EXTRA_BACKGROUND, true).build()) .setInputData(EXTRA_BACKGROUND to true)
.setConstraints(networkConstraints) .setConstraints(networkConstraints)
workManager.enqueueUniquePeriodicWork( workManager.enqueueUniquePeriodicWork(
tag, ExistingPeriodicWorkPolicy.KEEP, builder.build()) tag, ExistingPeriodicWorkPolicy.KEEP, builder.build())
@ -244,8 +240,11 @@ class WorkManagerImpl constructor(
return return
} }
val builder = OneTimeWorkRequest.Builder(DriveUploader::class.java) val builder = OneTimeWorkRequest.Builder(DriveUploader::class.java)
.setInputData(DriveUploader.getInputData(uri, purge)) .setInputData(
.setConstraints(networkConstraints) EXTRA_URI to uri.toString(),
EXTRA_PURGE to purge,
)
.setConstraints(networkConstraints)
if (purge) { if (purge) {
builder.setInitialDelay(Random().nextInt(3600).toLong(), TimeUnit.SECONDS) builder.setInitialDelay(Random().nextInt(3600).toLong(), TimeUnit.SECONDS)
} }
@ -306,4 +305,8 @@ class WorkManagerImpl constructor(
) )
} }
} }
} }
private fun <B : WorkRequest.Builder<*, *>, W : WorkRequest> WorkRequest.Builder<B, W>.setInputData(
vararg pairs: Pair<String, Any?>
): B = setInputData(workDataOf(*pairs))

Loading…
Cancel
Save