Less aggressive OpenTasks sync

pull/3190/head
Alex Baker 12 months ago
parent 52757f7947
commit a0a944fae3

@ -14,7 +14,7 @@ abstract class BaseWorker(
) : Worker(context, workerParams) {
override fun doWork(): Result {
Timber.d("%s.doWork()", javaClass.simpleName)
Timber.d("${javaClass.simpleName} $id $inputData")
return try {
runBlocking {
run()

@ -101,7 +101,7 @@ class WorkManagerImpl(
builder.setInitialDelay(1, TimeUnit.MINUTES)
}
val append = getSyncJob().any { it.state == WorkInfo.State.RUNNING }
Timber.d("sync: immediate=$immediate, append=$append)")
Timber.d("sync immediate=$immediate append=$append")
enqueue(workManager.beginUniqueWork(
TAG_SYNC,
if (append) APPEND_OR_REPLACE else REPLACE,

@ -8,15 +8,19 @@ import android.net.Uri
import android.os.Handler
import android.os.HandlerThread
import dagger.hilt.android.qualifiers.ApplicationContext
import org.dmfs.tasks.contract.TaskContract.*
import org.dmfs.tasks.contract.TaskContract.Properties
import org.dmfs.tasks.contract.TaskContract.TaskLists
import org.dmfs.tasks.contract.TaskContract.Tasks
import org.tasks.R
import org.tasks.preferences.Preferences
import org.tasks.sync.SyncAdapters
import timber.log.Timber
import javax.inject.Inject
class OpenTaskContentObserver @Inject constructor(
@ApplicationContext context: Context,
private val syncAdapters: SyncAdapters,
@ApplicationContext context: Context,
private val syncAdapters: SyncAdapters,
private val preferences: Preferences,
) : ContentObserver(getHandler()), SyncStatusObserver {
val authority = context.getString(R.string.opentasks_authority)
@ -24,14 +28,23 @@ class OpenTaskContentObserver @Inject constructor(
override fun onChange(selfChange: Boolean) = onChange(selfChange, null)
override fun onChange(selfChange: Boolean, uri: Uri?) {
if (selfChange || uri == null) {
Timber.d("Ignoring onChange(selfChange = $selfChange, uri = $uri)")
return
} else {
Timber.v("onChange($selfChange, $uri)")
}
when {
selfChange || uri == null ->
Timber.v("Ignoring onChange selfChange=$selfChange uri=$uri")
uri.getQueryParameter("caller_is_syncadapter")?.toBoolean() == true-> {
Timber.d("onChange uri=$uri")
syncAdapters.sync(immediate = true)
}
syncAdapters.syncOpenTasks()
preferences.isSyncOngoing ->
Timber.v("Ignoring onChange uri=$uri sync in progress")
else -> {
Timber.d("onChange uri=$uri")
syncAdapters.sync(immediate = true)
}
}
}
override fun onStatusChanged(which: Int) {

@ -7,14 +7,16 @@ class Debouncer(private val tag: String, private val block: suspend (Boolean) ->
private var count = 0
suspend fun sync(immediate: Boolean) {
val thisCount = ++count
delay(1000)
if (immediate || thisCount == count) {
block(immediate)
if (immediate) {
block(true)
} else {
Timber.v("debouncing $tag")
val thisCount = ++count
delay(1000)
if (thisCount == count) {
block(false)
} else {
Timber.v("debouncing $tag")
}
}
}
}
}

@ -7,15 +7,15 @@ import kotlinx.coroutines.async
import kotlinx.coroutines.launch
import org.tasks.LocalBroadcastManager
import org.tasks.R
import org.tasks.data.OpenTaskDao
import org.tasks.data.dao.CaldavDao
import org.tasks.data.dao.GoogleTaskDao
import org.tasks.data.entity.CaldavAccount.Companion.TYPE_CALDAV
import org.tasks.data.entity.CaldavAccount.Companion.TYPE_ETEBASE
import org.tasks.data.entity.CaldavAccount.Companion.TYPE_GOOGLE_TASKS
import org.tasks.data.entity.CaldavAccount.Companion.TYPE_OPENTASKS
import org.tasks.data.entity.CaldavAccount.Companion.TYPE_TASKS
import org.tasks.data.dao.CaldavDao
import org.tasks.data.entity.FORCE_CALDAV_SYNC
import org.tasks.data.dao.GoogleTaskDao
import org.tasks.data.OpenTaskDao
import org.tasks.data.entity.SUPPRESS_SYNC
import org.tasks.data.entity.Task
import org.tasks.jobs.WorkManager
@ -61,15 +61,7 @@ class SyncAdapters @Inject constructor(
syncStatus.sync(active)
}
fun syncOpenTasks() = scope.launch {
sync.sync(true)
}
fun sync() {
sync(false)
}
fun sync(immediate: Boolean) = scope.launch {
fun sync(immediate: Boolean = false) = scope.launch {
val caldavEnabled = async { isSyncEnabled() }
val opentasksEnabled = async { isOpenTaskSyncEnabled() }

Loading…
Cancel
Save