Remove children before duplicating tasks

pull/1194/head
Alex Baker 5 years ago
parent acf22b8ace
commit 9db74c728f

@ -67,6 +67,8 @@ class TaskDao @Inject constructor(
suspend fun setParent(parent: Long, tasks: List<Long>) = taskDao.setParent(parent, tasks) suspend fun setParent(parent: Long, tasks: List<Long>) = taskDao.setParent(parent, tasks)
suspend fun getChildren(ids: List<Long>) = taskDao.getChildren(ids)
suspend fun getChildren(id: Long): List<Long> = taskDao.getChildren(id) suspend fun getChildren(id: Long): List<Long> = taskDao.getChildren(id)
suspend fun setCollapsed(id: Long, collapsed: Boolean) = taskDao.setCollapsed(id, collapsed) suspend fun setCollapsed(id: Long, collapsed: Boolean) = taskDao.setCollapsed(id, collapsed)

@ -7,6 +7,7 @@ import com.todoroo.astrid.data.Task
import com.todoroo.astrid.gcal.GCalHelper import com.todoroo.astrid.gcal.GCalHelper
import org.tasks.LocalBroadcastManager import org.tasks.LocalBroadcastManager
import org.tasks.data.* import org.tasks.data.*
import org.tasks.db.DbUtils.dbchunk
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import java.util.* import java.util.*
import javax.inject.Inject import javax.inject.Inject
@ -25,7 +26,12 @@ class TaskDuplicator @Inject constructor(
suspend fun duplicate(taskIds: List<Long>): List<Task> { suspend fun duplicate(taskIds: List<Long>): List<Task> {
val result: MutableList<Task> = ArrayList() val result: MutableList<Task> = 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)) result.add(clone(task))
} }
localBroadcastManager.broadcastRefresh() localBroadcastManager.broadcastRefresh()

Loading…
Cancel
Save