Request davx5/etesync sync on swipe gesture

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

@ -1,6 +1,9 @@
package org.tasks.jobs package org.tasks.jobs
import android.accounts.AccountManager
import android.content.ContentResolver
import android.content.Context import android.content.Context
import android.os.Bundle
import androidx.hilt.Assisted import androidx.hilt.Assisted
import androidx.hilt.work.WorkerInject import androidx.hilt.work.WorkerInject
import androidx.work.WorkerParameters 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.CaldavAccount.Companion.TYPE_OPENTASKS
import org.tasks.data.CaldavDao import org.tasks.data.CaldavDao
import org.tasks.data.OpenTaskDao 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.opentasks.OpenTasksSynchronizer
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
@ -31,5 +36,22 @@ class SyncOpenTasksWork @WorkerInject constructor(
override suspend fun doSync() { override suspend fun doSync() {
openTasksSynchronizer.sync() 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 { companion object {
private val LOCK = Any() 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.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.SyncWork.Companion.EXTRA_IMMEDIATE
import org.tasks.jobs.WorkManager.Companion.MAX_CLEANUP_LENGTH 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.REMOTE_CONFIG_INTERVAL_HOURS
import org.tasks.jobs.WorkManager.Companion.TAG_BACKGROUND_SYNC_CALDAV 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) { private 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())
if (requireNetwork) { if (requireNetwork) {
builder.setConstraints(Constraints.Builder() builder.setConstraints(Constraints.Builder()
.setRequiredNetworkType( .setRequiredNetworkType(

Loading…
Cancel
Save