Use different 'etags' for DAVx5 and EteSync

pull/1066/head
Alex Baker 4 years ago
parent 3c42dce6e5
commit 073b28aaa1

@ -54,16 +54,19 @@ class OpenTaskDao @Inject constructor(@ApplicationContext context: Context) {
calendars
}
suspend fun getEtags(listId: Long): List<Pair<String, String>> = withContext(Dispatchers.IO) {
val items = ArrayList<Pair<String, String>>()
suspend fun getEtags(listId: Long): List<Triple<String, String, String>> = withContext(Dispatchers.IO) {
val items = ArrayList<Triple<String, String, String>>()
cr.query(
tasks,
arrayOf(Tasks._SYNC_ID, "version"),
arrayOf(Tasks._SYNC_ID, Tasks.SYNC_VERSION, "version"),
"${Tasks.LIST_ID} = $listId",
null,
null)?.use {
while (it.moveToNext()) {
items.add(Pair(it.getString(Tasks._SYNC_ID)!!, it.getLong("version").toString()))
items.add(Triple(
it.getString(Tasks._SYNC_ID)!!,
it.getLong(Tasks.SYNC_VERSION).toString(),
it.getLong("version").toString()))
}
}
items

@ -26,6 +26,7 @@ import org.tasks.caldav.CaldavConverter
import org.tasks.caldav.CaldavConverter.toRemote
import org.tasks.caldav.iCalendar
import org.tasks.data.*
import org.tasks.data.OpenTaskDao.Companion.ACCOUNT_TYPE_ETESYNC
import org.tasks.data.OpenTaskDao.Companion.getInt
import org.tasks.data.OpenTaskDao.Companion.getLong
import org.tasks.data.OpenTaskDao.Companion.getString
@ -144,9 +145,11 @@ class OpenTasksSynchronizer @Inject constructor(
}
}
val isEteSync = calendar.account!!.split(":")[0] == ACCOUNT_TYPE_ETESYNC
val etags = openTaskDao.getEtags(listId)
etags.forEach { (syncId, etag) ->
etags.forEach { (syncId, syncVersion, version) ->
val caldavTask = caldavDao.getTask(calendar.uuid!!, syncId)
val etag = if (isEteSync) version else syncVersion
if (caldavTask?.etag == null || caldavTask.etag != etag) {
applyChanges(calendar, listId, syncId, etag, caldavTask)
}

Loading…
Cancel
Save