Fix EteBase delete issues

pull/1244/head
Alex Baker 5 years ago
parent b55a783138
commit 09e0fb0c3b

@ -75,9 +75,11 @@ class EteBaseClient(
return item
}
suspend fun deleteItem(collection: Collection, uid: String): Item? {
suspend fun deleteItem(collection: Collection, task: CaldavTask): Item? {
val itemManager = etebase.collectionManager.getItemManager(collection)
return cache.itemGet(itemManager, collection.uid, uid)?.apply { delete() }
return cache.itemGet(itemManager, collection.uid, task.`object`!!)
?.takeIf { !it.isDeleted }
?.apply { delete() }
}
suspend fun updateCache(collection: Collection, items: List<Item>) {

@ -135,21 +135,23 @@ class EteBaseSynchronizer @Inject constructor(
Timber.d("${caldavCalendar.name} up to date")
}
val changes = ArrayList<Item>()
for (task in caldavDao.getMoved(caldavCalendar.uuid!!)) {
client.deleteItem(collection, task.remoteId!!)?.let { changes.add(it) }
for (caldavTask in caldavDao.getMoved(caldavCalendar.uuid!!)) {
client.deleteItem(collection, caldavTask)
?.let { changes.add(it) }
?: caldavDao.delete(caldavTask)
}
for (task in localChanges.values) {
val vtodo = task.vtodo
val existingTask = !isNullOrEmpty(vtodo)
for (change in localChanges.values) {
val task = change.task
val caldavTask = change.caldavTask
if (task.isDeleted) {
if (existingTask) {
client.deleteItem(collection, task.remoteId!!)?.let { changes.add(it) }
}
client.deleteItem(collection, caldavTask)
?.let { changes.add(it) }
?: taskDeleter.delete(task)
} else {
changes.add(client.updateItem(
collection,
task.caldavTask,
iCal.toVtodo(task.caldavTask, task.task)
caldavTask,
iCal.toVtodo(caldavTask, task)
))
}
}

@ -66,7 +66,11 @@ class EtebaseLocalCache private constructor(context: Context, username: String)
suspend fun itemSet(itemMgr: ItemManager, colUid: String, item: Item) {
withContext(Dispatchers.IO) {
if (item.isDeleted) {
fsCache.itemUnset(itemMgr, colUid, item.uid)
try {
fsCache.itemUnset(itemMgr, colUid, item.uid)
} catch (e: UrlParseException) {
// Ignore, as it just means the file doesn't exist
}
} else {
fsCache.itemSet(itemMgr, colUid, item)
}

Loading…
Cancel
Save