From 7da45d780ce88188ae6aec00e44e3373b25e9b23 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Sun, 27 Mar 2022 00:36:50 -0500 Subject: [PATCH] Set work input data with workDataOf --- .../main/java/org/tasks/jobs/DriveUploader.kt | 11 +--- .../java/org/tasks/jobs/WorkManagerImpl.kt | 55 ++++++++++--------- 2 files changed, 31 insertions(+), 35 deletions(-) diff --git a/app/src/main/java/org/tasks/jobs/DriveUploader.kt b/app/src/main/java/org/tasks/jobs/DriveUploader.kt index 51b5f4c9a..fea454b32 100644 --- a/app/src/main/java/org/tasks/jobs/DriveUploader.kt +++ b/app/src/main/java/org/tasks/jobs/DriveUploader.kt @@ -3,7 +3,6 @@ package org.tasks.jobs import android.content.Context import android.net.Uri import androidx.hilt.work.HiltWorker -import androidx.work.Data import androidx.work.WorkerParameters import com.google.api.client.googleapis.json.GoogleJsonResponseException import com.google.api.services.drive.model.File @@ -107,13 +106,7 @@ class DriveUploader @AssistedInject constructor( companion object { private const val FOLDER_NAME = "Tasks Backups" - private const val EXTRA_URI = "extra_uri" - private const val EXTRA_PURGE = "extra_purge" - - fun getInputData(uri: Uri, purge: Boolean) = - Data.Builder() - .putString(EXTRA_URI, uri.toString()) - .putBoolean(EXTRA_PURGE, purge) - .build() + const val EXTRA_URI = "extra_uri" + const val EXTRA_PURGE = "extra_purge" } } \ No newline at end of file diff --git a/app/src/main/java/org/tasks/jobs/WorkManagerImpl.kt b/app/src/main/java/org/tasks/jobs/WorkManagerImpl.kt index 6f0e50c40..86801f273 100644 --- a/app/src/main/java/org/tasks/jobs/WorkManagerImpl.kt +++ b/app/src/main/java/org/tasks/jobs/WorkManagerImpl.kt @@ -7,7 +7,6 @@ import android.content.Context import android.content.Intent import android.net.Uri import androidx.work.Constraints -import androidx.work.Data import androidx.work.ExistingPeriodicWorkPolicy import androidx.work.ExistingWorkPolicy.APPEND_OR_REPLACE import androidx.work.ExistingWorkPolicy.REPLACE @@ -18,12 +17,12 @@ import androidx.work.WorkContinuation import androidx.work.WorkInfo import androidx.work.WorkRequest import androidx.work.Worker +import androidx.work.workDataOf import com.todoroo.andlib.utility.AndroidUtilities import com.todoroo.andlib.utility.DateUtilities import com.todoroo.astrid.data.Task import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext -import org.tasks.BuildConfig import org.tasks.R import org.tasks.data.CaldavAccount 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.date.DateTimeUtils.midnight 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.SyncWork.Companion.EXTRA_BACKGROUND import org.tasks.jobs.SyncWork.Companion.EXTRA_IMMEDIATE @@ -75,28 +76,25 @@ class WorkManagerImpl constructor( override fun scheduleRepeat(task: Task) { enqueue( - OneTimeWorkRequest.Builder(AfterSaveWork::class.java) - .setInputData(Data.Builder() - .putLong(AfterSaveWork.EXTRA_ID, task.id) - .putBoolean( - AfterSaveWork.EXTRA_SUPPRESS_COMPLETION_SNACKBAR, - task.isSuppressRefresh() - ) - .build())) + OneTimeWorkRequest.Builder(AfterSaveWork::class.java) + .setInputData( + AfterSaveWork.EXTRA_ID to task.id, + AfterSaveWork.EXTRA_SUPPRESS_COMPLETION_SNACKBAR to task.isSuppressRefresh() + ) + ) } override fun updateCalendar(task: Task) { enqueue( - OneTimeWorkRequest.Builder(UpdateCalendarWork::class.java) - .setInputData(Data.Builder() - .putLong(UpdateCalendarWork.EXTRA_ID, task.id) - .build())) + OneTimeWorkRequest.Builder(UpdateCalendarWork::class.java) + .setInputData(UpdateCalendarWork.EXTRA_ID to task.id) + ) } @SuppressLint("EnqueueWork") override fun migrateLocalTasks(caldavAccount: CaldavAccount) { val builder = OneTimeWorkRequest.Builder(MigrateLocalWork::class.java) - .setInputData(Data.Builder().putString(EXTRA_ACCOUNT, caldavAccount.uuid).build()) + .setInputData(EXTRA_ACCOUNT to caldavAccount.uuid) .setConstraints(networkConstraints) enqueue(workManager.beginUniqueWork(TAG_MIGRATE_LOCAL, APPEND_OR_REPLACE, builder.build())) } @@ -104,11 +102,9 @@ class WorkManagerImpl constructor( override fun cleanup(ids: Iterable) { ids.chunked(MAX_CLEANUP_LENGTH) { enqueue( - OneTimeWorkRequest.Builder(CleanupWork::class.java) - .setInputData( - Data.Builder() - .putLongArray(CleanupWork.EXTRA_TASK_IDS, it.toLongArray()) - .build())) + OneTimeWorkRequest.Builder(CleanupWork::class.java) + .setInputData(CleanupWork.EXTRA_TASK_IDS to it.toLongArray()) + ) } } @@ -128,7 +124,7 @@ class WorkManagerImpl constructor( private suspend fun sync(immediate: Boolean, tag: String, c: Class, requireNetwork: Boolean = true) { Timber.d("sync(immediate = $immediate, $tag, $c, requireNetwork = $requireNetwork)") val builder = OneTimeWorkRequest.Builder(c) - .setInputData(Data.Builder().putBoolean(EXTRA_IMMEDIATE, immediate).build()) + .setInputData(EXTRA_IMMEDIATE to immediate) if (requireNetwork) { builder.setConstraints(networkConstraints) } @@ -153,7 +149,7 @@ class WorkManagerImpl constructor( } enqueue( OneTimeWorkRequest.Builder(ReverseGeocodeWork::class.java) - .setInputData(Data.Builder().putLong(ReverseGeocodeWork.PLACE_ID, place.id).build()) + .setInputData(ReverseGeocodeWork.PLACE_ID to place.id) .setConstraints(networkConstraints)) } @@ -189,7 +185,7 @@ class WorkManagerImpl constructor( Timber.d("scheduleBackgroundSync($tag, $c, enabled = $enabled)") if (enabled) { val builder = PeriodicWorkRequest.Builder(c, 1, TimeUnit.HOURS) - .setInputData(Data.Builder().putBoolean(EXTRA_BACKGROUND, true).build()) + .setInputData(EXTRA_BACKGROUND to true) .setConstraints(networkConstraints) workManager.enqueueUniquePeriodicWork( tag, ExistingPeriodicWorkPolicy.KEEP, builder.build()) @@ -244,8 +240,11 @@ class WorkManagerImpl constructor( return } val builder = OneTimeWorkRequest.Builder(DriveUploader::class.java) - .setInputData(DriveUploader.getInputData(uri, purge)) - .setConstraints(networkConstraints) + .setInputData( + EXTRA_URI to uri.toString(), + EXTRA_PURGE to purge, + ) + .setConstraints(networkConstraints) if (purge) { builder.setInitialDelay(Random().nextInt(3600).toLong(), TimeUnit.SECONDS) } @@ -306,4 +305,8 @@ class WorkManagerImpl constructor( ) } } -} \ No newline at end of file +} + +private fun , W : WorkRequest> WorkRequest.Builder.setInputData( + vararg pairs: Pair +): B = setInputData(workDataOf(*pairs))