Copy task together with subtasks

pull/1188/head
supermazena 5 years ago committed by Alex Baker
parent bf71efde55
commit d4f3438eed

@ -32,16 +32,19 @@ class TaskDuplicator @Inject constructor(
return result
}
private suspend fun clone(clone: Task): Task {
private suspend fun clone(clone: Task, parentId: Long = 0L): Task {
val originalId = clone.id
clone.creationDate = DateUtilities.now()
clone.modificationDate = DateUtilities.now()
clone.completionDate = 0L
clone.calendarURI = ""
clone.uuid = Task.NO_UUID
clone.suppressSync()
clone.suppressRefresh()
taskDao.createNew(clone)
with(clone) {
creationDate = DateUtilities.now()
modificationDate = DateUtilities.now()
completionDate = 0L
calendarURI = ""
parent = parentId
uuid = Task.NO_UUID
suppressSync()
suppressRefresh()
}
val newId = taskDao.createNew(clone)
val tags = tagDataDao.getTagDataForTask(originalId)
if (tags.isNotEmpty()) {
tagDao.insert(Lists.transform(tags) { td: TagData? -> Tag(clone, td!!) })
@ -65,6 +68,12 @@ class TaskDuplicator @Inject constructor(
}
gcalHelper.createTaskEventIfEnabled(clone)
taskDao.save(clone, null) // TODO: delete me
getDirectChildren(originalId)
.filter { it.parent == originalId }
.forEach { subtask -> clone(subtask, newId) }
return clone
}
private suspend fun getDirectChildren(taskId: Long): List<Task> =
taskDao.fetch(taskDao.getChildren(taskId)).filter { it.parent == taskId }
}
Loading…
Cancel
Save