From 9db74c728f4d7b79ed7d0385a90c10dd026dfc11 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Wed, 21 Oct 2020 13:27:43 -0500 Subject: [PATCH] Remove children before duplicating tasks --- app/src/main/java/com/todoroo/astrid/dao/TaskDao.kt | 2 ++ .../java/com/todoroo/astrid/service/TaskDuplicator.kt | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/todoroo/astrid/dao/TaskDao.kt b/app/src/main/java/com/todoroo/astrid/dao/TaskDao.kt index 3eb4a5c08..b9b3504fc 100644 --- a/app/src/main/java/com/todoroo/astrid/dao/TaskDao.kt +++ b/app/src/main/java/com/todoroo/astrid/dao/TaskDao.kt @@ -67,6 +67,8 @@ class TaskDao @Inject constructor( suspend fun setParent(parent: Long, tasks: List) = taskDao.setParent(parent, tasks) + suspend fun getChildren(ids: List) = taskDao.getChildren(ids) + suspend fun getChildren(id: Long): List = taskDao.getChildren(id) suspend fun setCollapsed(id: Long, collapsed: Boolean) = taskDao.setCollapsed(id, collapsed) diff --git a/app/src/main/java/com/todoroo/astrid/service/TaskDuplicator.kt b/app/src/main/java/com/todoroo/astrid/service/TaskDuplicator.kt index 8b52fc89d..0fbfd743b 100644 --- a/app/src/main/java/com/todoroo/astrid/service/TaskDuplicator.kt +++ b/app/src/main/java/com/todoroo/astrid/service/TaskDuplicator.kt @@ -7,6 +7,7 @@ import com.todoroo.astrid.data.Task import com.todoroo.astrid.gcal.GCalHelper import org.tasks.LocalBroadcastManager import org.tasks.data.* +import org.tasks.db.DbUtils.dbchunk import org.tasks.preferences.Preferences import java.util.* import javax.inject.Inject @@ -25,7 +26,12 @@ class TaskDuplicator @Inject constructor( suspend fun duplicate(taskIds: List): List { val result: MutableList = ArrayList() - for (task in taskDao.fetch(taskIds)) { + val tasks = ArrayList(taskIds) + taskIds.dbchunk().forEach { + tasks.removeAll(googleTaskDao.getChildren(it)) + tasks.removeAll(taskDao.getChildren(it)) + } + for (task in taskDao.fetch(tasks)) { result.add(clone(task)) } localBroadcastManager.broadcastRefresh()