diff --git a/app/src/main/java/org/tasks/caldav/CaldavSynchronizer.kt b/app/src/main/java/org/tasks/caldav/CaldavSynchronizer.kt index 2342a376d..0e8024485 100644 --- a/app/src/main/java/org/tasks/caldav/CaldavSynchronizer.kt +++ b/app/src/main/java/org/tasks/caldav/CaldavSynchronizer.kt @@ -325,9 +325,17 @@ class CaldavSynchronizer @Inject constructor( caldavTask: CaldavTask ): Boolean { try { - if (!isNullOrEmpty(caldavTask.obj)) { + val objectId = caldavTask.obj + ?: run { + Timber.e("null obj for caldavTask.id=${caldavTask.id} task.id=${caldavTask.task}") + caldavTask.obj = caldavTask.remoteId?.let { "$it.ics" } + caldavTask.obj + } + if (objectId?.isNotBlank() == true) { val remote = DavResource( - httpClient, httpUrl.newBuilder().addPathSegment(caldavTask.obj!!).build()) + httpClient = httpClient, + location = httpUrl.newBuilder().addPathSegment(objectId).build(), + ) remote.delete(null) {} } } catch (e: HttpException) { diff --git a/app/src/main/java/org/tasks/etebase/EtebaseClient.kt b/app/src/main/java/org/tasks/etebase/EtebaseClient.kt index e7a1c238e..166bb3b04 100644 --- a/app/src/main/java/org/tasks/etebase/EtebaseClient.kt +++ b/app/src/main/java/org/tasks/etebase/EtebaseClient.kt @@ -8,8 +8,8 @@ import com.etebase.client.Item import com.etebase.client.ItemMetadata import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext -import org.tasks.data.entity.CaldavCalendar import org.tasks.data.dao.CaldavDao +import org.tasks.data.entity.CaldavCalendar import org.tasks.data.entity.CaldavTask import org.tasks.time.DateTimeUtils2.currentTimeMillis import timber.log.Timber @@ -64,7 +64,14 @@ class EtebaseClient( suspend fun updateItem(collection: Collection, task: CaldavTask, content: ByteArray): Item { val itemManager = etebase.collectionManager.getItemManager(collection) - val item = cache.itemGet(itemManager, collection.uid, task.obj!!) + val obj = task.obj + ?: run { + Timber.e("null obj for caldavTask.id=${task.id}") + task.obj = task.remoteId + task.obj + } + ?: throw IllegalStateException("Update failed - missing UUID") + val item = cache.itemGet(itemManager, collection.uid, obj) ?: itemManager .create(ItemMetadata().apply { name = task.remoteId!! }, "") .apply { @@ -78,7 +85,14 @@ class EtebaseClient( suspend fun deleteItem(collection: Collection, task: CaldavTask): Item? { val itemManager = etebase.collectionManager.getItemManager(collection) - return cache.itemGet(itemManager, collection.uid, task.obj!!) + val objId = task.obj + ?: run { + Timber.e("null obj for caldavTask.id=${task.id}") + task.obj = task.remoteId + task.obj + } + ?: return null + return cache.itemGet(itemManager, collection.uid, objId) ?.takeIf { !it.isDeleted } ?.apply { meta = updateMtime(meta)