From cafe3abf23c8d5e29d713d26a63ab9acd068ad27 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Fri, 28 Feb 2025 08:07:07 -0600 Subject: [PATCH] Ignore relationship loops created remotely --- .../java/org/tasks/data/GoogleTaskDaoTests.kt | 15 +++++++++++++++ .../kotlin/org/tasks/data/dao/CaldavDao.kt | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/src/androidTest/java/org/tasks/data/GoogleTaskDaoTests.kt b/app/src/androidTest/java/org/tasks/data/GoogleTaskDaoTests.kt index 851afb6ae..c9e035260 100644 --- a/app/src/androidTest/java/org/tasks/data/GoogleTaskDaoTests.kt +++ b/app/src/androidTest/java/org/tasks/data/GoogleTaskDaoTests.kt @@ -183,6 +183,21 @@ class GoogleTaskDaoTests : InjectingTestCase() { assertEquals("abcd", googleTaskDao.getByTaskId(1)!!.remoteParent) } + @Test + fun ignoreSelfParent() = runBlocking { + insert( + newCaldavTask( + with(TASK, 1), + with(REMOTE_ID, "123"), + with(REMOTE_PARENT, "123") + ) + ) + + caldavDao.updateParents() + + assertEquals(0, taskDao.fetch(1)!!.parent) + } + @Test fun updateParents() = runBlocking { insert(newCaldavTask(with(TASK, 1), with(REMOTE_ID, "123"))) diff --git a/data/src/commonMain/kotlin/org/tasks/data/dao/CaldavDao.kt b/data/src/commonMain/kotlin/org/tasks/data/dao/CaldavDao.kt index f034ce68a..1548fdc91 100644 --- a/data/src/commonMain/kotlin/org/tasks/data/dao/CaldavDao.kt +++ b/data/src/commonMain/kotlin/org/tasks/data/dao/CaldavDao.kt @@ -296,7 +296,7 @@ GROUP BY caldav_lists.cdl_uuid ) UPDATE tasks SET parent = IFNULL( - (SELECT parent_id FROM parent_map WHERE task_id = tasks._id), + (SELECT parent_id FROM parent_map WHERE task_id = tasks._id AND tasks._id != parent_id), 0 ) WHERE _id IN (