Request davx5/etesync sync on swipe gesture

pull/1148/head
Alex Baker 4 years ago
parent f2a0eac367
commit ca49ca642e

@ -1,6 +1,9 @@
package org.tasks.jobs
import android.accounts.AccountManager
import android.content.ContentResolver
import android.content.Context
import android.os.Bundle
import androidx.hilt.Assisted
import androidx.hilt.work.WorkerInject
import androidx.work.WorkerParameters
@ -10,6 +13,8 @@ import org.tasks.analytics.Firebase
import org.tasks.data.CaldavAccount.Companion.TYPE_OPENTASKS
import org.tasks.data.CaldavDao
import org.tasks.data.OpenTaskDao
import org.tasks.data.OpenTaskDao.Companion.ACCOUNT_TYPE_DAVx5
import org.tasks.data.OpenTaskDao.Companion.ACCOUNT_TYPE_ETESYNC
import org.tasks.opentasks.OpenTasksSynchronizer
import org.tasks.preferences.Preferences
@ -31,5 +36,22 @@ class SyncOpenTasksWork @WorkerInject constructor(
override suspend fun doSync() {
openTasksSynchronizer.sync()
if (inputData.getBoolean(EXTRA_IMMEDIATE, false)) {
AccountManager
.get(context)
.accounts
.filter { it.type == ACCOUNT_TYPE_DAVx5 || it.type == ACCOUNT_TYPE_ETESYNC }
.forEach {
ContentResolver.requestSync(
it,
openTaskDao.authority,
Bundle().apply {
putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true)
putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true)
}
)
}
}
}
}

@ -46,5 +46,7 @@ abstract class SyncWork constructor(
companion object {
private val LOCK = Any()
const val EXTRA_IMMEDIATE = "extra_immediate"
}
}

@ -21,6 +21,7 @@ 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.SyncWork.Companion.EXTRA_IMMEDIATE
import org.tasks.jobs.WorkManager.Companion.MAX_CLEANUP_LENGTH
import org.tasks.jobs.WorkManager.Companion.REMOTE_CONFIG_INTERVAL_HOURS
import org.tasks.jobs.WorkManager.Companion.TAG_BACKGROUND_SYNC_CALDAV
@ -89,6 +90,7 @@ class WorkManagerImpl constructor(
private fun sync(immediate: Boolean, tag: String, c: Class<out SyncWork>, 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())
if (requireNetwork) {
builder.setConstraints(Constraints.Builder()
.setRequiredNetworkType(

Loading…
Cancel
Save