From 3131c56651ab487d38b70f4b7e27585f452aeea6 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Thu, 22 Dec 2022 16:32:41 -0600 Subject: [PATCH] Code review --- .../astrid/adapter/FilterViewHolder.kt | 2 +- .../com/todoroo/astrid/adapter/TaskAdapter.kt | 2 +- .../com/todoroo/astrid/api/GtasksFilter.java | 4 ---- .../com/todoroo/astrid/service/TaskCreator.kt | 4 ++-- .../todoroo/astrid/service/TaskDuplicator.kt | 6 +++++- .../com/todoroo/astrid/service/TaskMover.kt | 12 ++++++++---- .../com/todoroo/astrid/service/Upgrader.kt | 19 ------------------- .../org/tasks/backup/TasksJsonImporter.kt | 1 - .../java/org/tasks/compose/edit/SubtaskRow.kt | 13 +++++++------ .../main/java/org/tasks/data/CaldavTask.kt | 4 ++-- .../main/java/org/tasks/data/DeletionDao.kt | 3 --- .../main/java/org/tasks/data/GoogleTaskDao.kt | 4 ---- .../org/tasks/data/TaskListQueryRecursive.kt | 7 +------ .../tasks/filters/FilterCriteriaProvider.kt | 1 - .../tasks/gtasks/GoogleTaskSynchronizer.kt | 4 ++-- .../preferences/DefaultFilterProvider.kt | 2 +- .../tasks/provider/TasksContentProvider.kt | 2 -- .../java/org/tasks/ui/SubtaskControlSet.kt | 2 +- .../java/org/tasks/ui/TaskEditViewModel.kt | 4 ++-- 19 files changed, 33 insertions(+), 63 deletions(-) diff --git a/app/src/main/java/com/todoroo/astrid/adapter/FilterViewHolder.kt b/app/src/main/java/com/todoroo/astrid/adapter/FilterViewHolder.kt index d228447a2..7f80e8212 100644 --- a/app/src/main/java/com/todoroo/astrid/adapter/FilterViewHolder.kt +++ b/app/src/main/java/com/todoroo/astrid/adapter/FilterViewHolder.kt @@ -104,7 +104,7 @@ class FilterViewHolder internal constructor( } return when (filter) { is TagFilter -> R.drawable.ic_outline_label_24px - is GtasksFilter -> R.drawable.ic_list_24px + is GtasksFilter, is CaldavFilter -> R.drawable.ic_list_24px is CustomFilter -> R.drawable.ic_outline_filter_list_24px is PlaceFilter -> R.drawable.ic_outline_place_24px diff --git a/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.kt b/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.kt index b1f48716e..0676ace39 100644 --- a/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.kt +++ b/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.kt @@ -251,7 +251,7 @@ open class TaskAdapter( ) } else { task.parent = newParent.id - task.caldavTask = CaldavTask(task.id, list) + task.caldavTask = CaldavTask(task.id, list, remoteId = null) googleTaskDao.insertAndShift(task.task, task.caldavTask, newTasksOnTop) } taskDao.touch(task.id) diff --git a/app/src/main/java/com/todoroo/astrid/api/GtasksFilter.java b/app/src/main/java/com/todoroo/astrid/api/GtasksFilter.java index fb7c1d143..96c7227e2 100644 --- a/app/src/main/java/com/todoroo/astrid/api/GtasksFilter.java +++ b/app/src/main/java/com/todoroo/astrid/api/GtasksFilter.java @@ -72,10 +72,6 @@ public class GtasksFilter extends Filter { return values; } - public String getListId() { - return list.getUuid(); - } - public String getAccount() { return list.getAccount(); } diff --git a/app/src/main/java/com/todoroo/astrid/service/TaskCreator.kt b/app/src/main/java/com/todoroo/astrid/service/TaskCreator.kt index d39c72994..b0712bdf0 100644 --- a/app/src/main/java/com/todoroo/astrid/service/TaskCreator.kt +++ b/app/src/main/java/com/todoroo/astrid/service/TaskCreator.kt @@ -56,7 +56,7 @@ class TaskCreator @Inject constructor( if (task.hasTransitory(GoogleTask.KEY)) { googleTaskDao.insertAndShift( task, - CaldavTask(task.id, task.getTransitory(GoogleTask.KEY)!!), + CaldavTask(task.id, task.getTransitory(GoogleTask.KEY)!!, remoteId = null), addToTop ) } else if (task.hasTransitory(CaldavTask.KEY)) { @@ -67,7 +67,7 @@ class TaskCreator @Inject constructor( if (remoteList is GtasksFilter) { googleTaskDao.insertAndShift( task, - CaldavTask(task.id, remoteList.remoteId), + CaldavTask(task.id, remoteList.remoteId, remoteId = null), addToTop ) } else if (remoteList is CaldavFilter) { 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 a1ac00faf..31e5cd166 100644 --- a/app/src/main/java/com/todoroo/astrid/service/TaskDuplicator.kt +++ b/app/src/main/java/com/todoroo/astrid/service/TaskDuplicator.kt @@ -57,7 +57,11 @@ class TaskDuplicator @Inject constructor( val googleTask = googleTaskDao.getByTaskId(originalId) val addToTop = preferences.addTasksToTop() if (googleTask != null) { - googleTaskDao.insertAndShift(clone, CaldavTask(clone.id, googleTask.calendar!!), addToTop) + googleTaskDao.insertAndShift( + clone, + CaldavTask(clone.id, googleTask.calendar!!, remoteId = null), + addToTop + ) } val caldavTask = caldavDao.getTask(originalId) if (caldavTask != null) { diff --git a/app/src/main/java/com/todoroo/astrid/service/TaskMover.kt b/app/src/main/java/com/todoroo/astrid/service/TaskMover.kt index 2abb486cd..da8a20252 100644 --- a/app/src/main/java/com/todoroo/astrid/service/TaskMover.kt +++ b/app/src/main/java/com/todoroo/astrid/service/TaskMover.kt @@ -89,9 +89,13 @@ class TaskMover @Inject constructor( when(selected) { is GtasksFilter -> { val listId = selected.remoteId - googleTaskDao.insertAndShift(task, CaldavTask(id, listId), preferences.addTasksToTop()) + googleTaskDao.insertAndShift( + task = task, + caldavTask = CaldavTask(id, listId, remoteId = null), + top = preferences.addTasksToTop() + ) children.takeIf { it.isNotEmpty() } - ?.map { CaldavTask(it, listId) } + ?.map { CaldavTask(task = it, calendar = listId, remoteId = null) } ?.let { googleTaskDao.insert(it) } } is CaldavFilter -> { @@ -172,11 +176,11 @@ class TaskMover @Inject constructor( val listId = filter.remoteId googleTaskDao.insertAndShift( task, - CaldavTask(id, listId, remoteId = null, `object` = null), + CaldavTask(id, listId, remoteId = null), preferences.addTasksToTop() ) children.takeIf { it.isNotEmpty() } - ?.map { CaldavTask(it, listId, remoteId = null, `object` = null) } + ?.map { CaldavTask(it, listId, remoteId = null) } ?.let { googleTaskDao.insert(it) } } } \ No newline at end of file diff --git a/app/src/main/java/com/todoroo/astrid/service/Upgrader.kt b/app/src/main/java/com/todoroo/astrid/service/Upgrader.kt index b6f2a1643..faa57fc3f 100644 --- a/app/src/main/java/com/todoroo/astrid/service/Upgrader.kt +++ b/app/src/main/java/com/todoroo/astrid/service/Upgrader.kt @@ -35,7 +35,6 @@ class Upgrader @Inject constructor( private val filterDao: FilterDao, private val defaultFilterProvider: DefaultFilterProvider, private val googleTaskListDao: GoogleTaskListDao, - private val googleTaskDao: GoogleTaskDao, private val userActivityDao: UserActivityDao, private val taskAttachmentDao: TaskAttachmentDao, private val caldavDao: CaldavDao, @@ -56,7 +55,6 @@ class Upgrader @Inject constructor( run(from, V4_9_5) { removeDuplicateTags() } run(from, V5_3_0) { migrateFilters() } run(from, V6_0_beta_1) { migrateDefaultSyncList() } - run(from, V6_0_beta_2) { migrateGoogleTaskAccount() } run(from, V6_4) { migrateUris() } run(from, V6_7) { this.migrateGoogleTaskFilters() } run(from, V6_8_1) { this.migrateCaldavFilters() } @@ -242,22 +240,6 @@ class Upgrader @Inject constructor( } } - private suspend fun migrateGoogleTaskAccount() { - // TODO: migrate google task accounts? -// val account = preferences.getStringValue("gtasks_user") -// if (!isNullOrEmpty(account)) { -// val caldavAccount = CaldavAccount() -// caldavAccount.uuid = account -// caldavAccount.name = account -// caldavAccount.username = account -// caldavDao.insert(caldavAccount) -// for (list in googleTaskListDao.getAllLists()) { -// list.account = account -// googleTaskListDao.insertOrReplace(list) -// } -// } - } - private suspend fun migrateUris() { migrateUriPreference(R.string.p_backup_dir) migrateUriPreference(R.string.p_attachment_dir) @@ -337,7 +319,6 @@ class Upgrader @Inject constructor( private const val V4_9_5 = 434 private const val V5_3_0 = 491 private const val V6_0_beta_1 = 522 - private const val V6_0_beta_2 = 523 const val V6_4 = 546 private const val V6_7 = 585 private const val V6_8_1 = 607 diff --git a/app/src/main/java/org/tasks/backup/TasksJsonImporter.kt b/app/src/main/java/org/tasks/backup/TasksJsonImporter.kt index 792934961..13b263e20 100644 --- a/app/src/main/java/org/tasks/backup/TasksJsonImporter.kt +++ b/app/src/main/java/org/tasks/backup/TasksJsonImporter.kt @@ -191,7 +191,6 @@ class TasksJsonImporter @Inject constructor( task = taskId, calendar = googleTask.listId, remoteId = googleTask.remoteId, - `object` = null, ).apply { remoteOrder = googleTask.remoteOrder remoteParent = googleTask.remoteParent diff --git a/app/src/main/java/org/tasks/compose/edit/SubtaskRow.kt b/app/src/main/java/org/tasks/compose/edit/SubtaskRow.kt index d0b53e711..c01d68523 100644 --- a/app/src/main/java/org/tasks/compose/edit/SubtaskRow.kt +++ b/app/src/main/java/org/tasks/compose/edit/SubtaskRow.kt @@ -28,13 +28,12 @@ import com.todoroo.astrid.api.Filter import com.todoroo.astrid.api.GtasksFilter import com.todoroo.astrid.data.Task import org.tasks.compose.* -import org.tasks.data.CaldavTask import org.tasks.data.TaskContainer @Composable fun SubtaskRow( + originalFilter: Filter?, filter: Filter?, - googleTask: CaldavTask?, hasParent: Boolean, desaturate: Boolean, existingSubtasks: List, @@ -62,9 +61,11 @@ fun SubtaskRow( }, content = { Column { - val isGoogleTaskChild = - filter is GtasksFilter && hasParent && googleTask?.calendar == filter.remoteId + hasParent && + filter is GtasksFilter && + originalFilter is GtasksFilter && + originalFilter.remoteId == filter.remoteId if (isGoogleTaskChild) { DisabledText( text = stringResource(id = org.tasks.R.string.subtasks_multilevel_google_task), @@ -208,8 +209,8 @@ fun ExistingSubtaskRow( fun NoSubtasks() { MdcTheme { SubtaskRow( + originalFilter = null, filter = null, - googleTask = null, hasParent = false, desaturate = true, existingSubtasks = emptyList(), @@ -230,8 +231,8 @@ fun NoSubtasks() { fun SubtasksPreview() { MdcTheme { SubtaskRow( + originalFilter = null, filter = null, - googleTask = null, hasParent = false, desaturate = true, existingSubtasks = listOf( diff --git a/app/src/main/java/org/tasks/data/CaldavTask.kt b/app/src/main/java/org/tasks/data/CaldavTask.kt index 62acf8ce8..c4a23f2c8 100644 --- a/app/src/main/java/org/tasks/data/CaldavTask.kt +++ b/app/src/main/java/org/tasks/data/CaldavTask.kt @@ -65,7 +65,7 @@ class CaldavTask { } @Ignore - constructor(task: Long, calendar: String?, remoteId: String?, `object`: String?) { + constructor(task: Long, calendar: String?, remoteId: String?, `object`: String? = null) { this.task = task this.calendar = calendar this.remoteId = remoteId @@ -75,7 +75,7 @@ class CaldavTask { fun isDeleted() = deleted > 0 override fun toString(): String = - "CaldavTask(id=$id, task=$task, calendar=$calendar, `object`=$`object`, remoteId=$remoteId, etag=$etag, lastSync=$lastSync, deleted=$deleted, remoteParent=$remoteParent)" + "CaldavTask(id=$id, task=$task, calendar=$calendar, `object`=$`object`, remoteId=$remoteId, etag=$etag, lastSync=$lastSync, deleted=$deleted, remoteParent=$remoteParent, isMoved=$isMoved, remoteOrder=$remoteOrder)" companion object { const val KEY = "caldav" diff --git a/app/src/main/java/org/tasks/data/DeletionDao.kt b/app/src/main/java/org/tasks/data/DeletionDao.kt index 2987610f8..7627885f9 100644 --- a/app/src/main/java/org/tasks/data/DeletionDao.kt +++ b/app/src/main/java/org/tasks/data/DeletionDao.kt @@ -55,9 +55,6 @@ WHERE recurring = 1 ids.eachChunk(this::markDeletedInternal) } - @Query("SELECT * FROM caldav_lists WHERE cdl_account = :account ORDER BY cdl_name ASC") - abstract suspend fun getLists(account: String): List - @Query("SELECT cd_task FROM caldav_tasks WHERE cd_calendar = :calendar AND cd_deleted = 0") internal abstract suspend fun getActiveCaldavTasks(calendar: String): List diff --git a/app/src/main/java/org/tasks/data/GoogleTaskDao.kt b/app/src/main/java/org/tasks/data/GoogleTaskDao.kt index fff3a2b26..fe857456a 100644 --- a/app/src/main/java/org/tasks/data/GoogleTaskDao.kt +++ b/app/src/main/java/org/tasks/data/GoogleTaskDao.kt @@ -2,7 +2,6 @@ package org.tasks.data import androidx.room.* import com.todoroo.astrid.data.Task -import kotlinx.coroutines.flow.Flow import org.tasks.data.CaldavAccount.Companion.TYPE_GOOGLE_TASKS @Dao @@ -63,9 +62,6 @@ abstract class GoogleTaskDao { @Query("SELECT caldav_tasks.* FROM caldav_tasks INNER JOIN caldav_lists ON cdl_uuid = cd_calendar INNER JOIN caldav_accounts ON cda_uuid = cdl_account WHERE cd_task = :taskId AND cd_deleted = 0 AND cda_account_type = $TYPE_GOOGLE_TASKS LIMIT 1") abstract suspend fun getByTaskId(taskId: Long): CaldavTask? - @Query("SELECT caldav_tasks.* FROM caldav_tasks INNER JOIN caldav_lists ON cdl_uuid = cd_calendar INNER JOIN caldav_accounts ON cda_uuid = cdl_account WHERE cd_task = :taskId AND cd_deleted = 0 AND cda_account_type = $TYPE_GOOGLE_TASKS LIMIT 1") - abstract fun watchGoogleTask(taskId: Long): Flow - @Update abstract suspend fun update(googleTask: CaldavTask) diff --git a/app/src/main/java/org/tasks/data/TaskListQueryRecursive.kt b/app/src/main/java/org/tasks/data/TaskListQueryRecursive.kt index 55556a1b0..2b7955744 100644 --- a/app/src/main/java/org/tasks/data/TaskListQueryRecursive.kt +++ b/app/src/main/java/org/tasks/data/TaskListQueryRecursive.kt @@ -36,7 +36,6 @@ internal object TaskListQueryRecursive { private val SUBTASK_QUERY = QueryTemplate() .join(Join.inner(RECURSIVE, Task.PARENT.eq(RECURSIVE_TASK))) -// .join(Join.left(CaldavTask.TABLE, Criterion.and(CaldavTask.TASK.eq(Task.ID), CaldavTask.DELETED.eq(0)))) .where(activeAndVisible()) fun getRecursiveQuery( @@ -46,19 +45,15 @@ internal object TaskListQueryRecursive { var joinedQuery = JOINS var where = " WHERE recursive_tasks.hidden = 0" val parentQuery: String - val subtaskQuery: QueryTemplate when (filter) { is CaldavFilter -> { parentQuery = newCaldavQuery(filter.uuid) - subtaskQuery = SUBTASK_QUERY } is GtasksFilter -> { parentQuery = newCaldavQuery(filter.list.uuid!!) - subtaskQuery = SUBTASK_QUERY } else -> { parentQuery = PermaSql.replacePlaceholdersForQuery(filter.getSqlQuery()) - subtaskQuery = SUBTASK_QUERY joinedQuery += " LEFT JOIN (SELECT task, max(indent) AS max_indent FROM recursive_tasks GROUP BY task) AS recursive_indents ON recursive_indents.task = tasks._id " where += " AND indent = max_indent " } @@ -96,7 +91,7 @@ internal object TaskListQueryRecursive { SELECT tasks._id, $parentCompleted as parent_complete, 0 as subtask_complete, $completionSort as completion_sort, 0 as parent, tasks.collapsed as collapsed, 0 as hidden, 0 AS sort_indent, UPPER(tasks.title) AS sort_title, $sortSelect, $sortField as primary_sort, NULL as secondarySort, ${SortHelper.getSortGroup(sortMode)} FROM tasks $parentQuery UNION ALL SELECT tasks._id, recursive_tasks.parent_complete, $parentCompleted as subtask_complete, $completionSort as completion_sort, recursive_tasks.task as parent, tasks.collapsed as collapsed, CASE WHEN recursive_tasks.collapsed > 0 OR recursive_tasks.hidden > 0 THEN 1 ELSE 0 END as hidden, recursive_tasks.indent+1 AS sort_indent, UPPER(tasks.title) AS sort_title, $sortSelect, recursive_tasks.primary_sort as primary_sort, $sortField as secondary_sort, recursive_tasks.sort_group FROM tasks - $subtaskQuery + $SUBTASK_QUERY ORDER BY parent_complete ASC, sort_indent DESC, subtask_complete ASC, completion_sort DESC, ${SortHelper.orderForSortTypeRecursive(sortMode, reverseSort)} ) SELECT * FROM recursive_tasks """.trimIndent() diff --git a/app/src/main/java/org/tasks/filters/FilterCriteriaProvider.kt b/app/src/main/java/org/tasks/filters/FilterCriteriaProvider.kt index 206bc7052..fe7156efd 100644 --- a/app/src/main/java/org/tasks/filters/FilterCriteriaProvider.kt +++ b/app/src/main/java/org/tasks/filters/FilterCriteriaProvider.kt @@ -146,7 +146,6 @@ class FilterCriteriaProvider @Inject constructor( context.getString(R.string.custom_filter_is_subtask), select(Task.ID) .from(Task.TABLE) - .join(inner(CaldavTask.TABLE, CaldavTask.TASK.eq(Task.ID))) .where(field("${Task.PARENT}>0").eq(1)) .toString() ) diff --git a/app/src/main/java/org/tasks/gtasks/GoogleTaskSynchronizer.kt b/app/src/main/java/org/tasks/gtasks/GoogleTaskSynchronizer.kt index 50d6d9c4a..d96a0dc14 100644 --- a/app/src/main/java/org/tasks/gtasks/GoogleTaskSynchronizer.kt +++ b/app/src/main/java/org/tasks/gtasks/GoogleTaskSynchronizer.kt @@ -170,7 +170,7 @@ class GoogleTaskSynchronizer @Inject constructor( @Throws(IOException::class) private suspend fun pushLocalChanges(account: CaldavAccount, gtasksInvoker: GtasksInvoker) { - val tasks = taskDao.getGoogleTasksToPush(account.username!!) + val tasks = taskDao.getGoogleTasksToPush(account.uuid!!) for (task in tasks) { pushTask(task, gtasksInvoker) } @@ -302,7 +302,7 @@ class GoogleTaskSynchronizer @Inject constructor( var googleTask = googleTaskDao.getByRemoteId(remoteId) var task: com.todoroo.astrid.data.Task? = null if (googleTask == null) { - googleTask = CaldavTask(0, "") + googleTask = CaldavTask(0, "", remoteId = null) } else if (googleTask.task > 0) { task = taskDao.fetch(googleTask.task) } diff --git a/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.kt b/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.kt index bdb27db87..19fb1b540 100644 --- a/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.kt +++ b/app/src/main/java/org/tasks/preferences/DefaultFilterProvider.kt @@ -115,7 +115,7 @@ class DefaultFilterProvider @Inject constructor( TYPE_FILTER -> getFilterPreference(filterType, getBuiltInFilterId(filter)) TYPE_CUSTOM_FILTER -> getFilterPreference(filterType, (filter as CustomFilter).id) TYPE_TAG -> getFilterPreference(filterType, (filter as TagFilter).uuid) - TYPE_GOOGLE_TASKS -> getFilterPreference(filterType, (filter as GtasksFilter).listId) + TYPE_GOOGLE_TASKS -> getFilterPreference(filterType, (filter as GtasksFilter).remoteId) TYPE_CALDAV -> getFilterPreference(filterType, (filter as CaldavFilter).uuid) TYPE_LOCATION -> getFilterPreference(filterType, (filter as PlaceFilter).uid) else -> null diff --git a/app/src/main/java/org/tasks/provider/TasksContentProvider.kt b/app/src/main/java/org/tasks/provider/TasksContentProvider.kt index 245637555..296be16eb 100644 --- a/app/src/main/java/org/tasks/provider/TasksContentProvider.kt +++ b/app/src/main/java/org/tasks/provider/TasksContentProvider.kt @@ -70,8 +70,6 @@ class TasksContentProvider : ContentProvider() { companion object { private const val TODO_AGENDA_TABLES = """${Task.TABLE_NAME} - LEFT JOIN google_tasks ON gt_task = _id - LEFT JOIN google_task_lists ON gtl_remote_id = gt_list_id LEFT JOIN caldav_tasks ON cd_task = _id LEFT JOIN caldav_lists ON cdl_uuid = cd_calendar""" private const val AUTHORITY = BuildConfig.APPLICATION_ID diff --git a/app/src/main/java/org/tasks/ui/SubtaskControlSet.kt b/app/src/main/java/org/tasks/ui/SubtaskControlSet.kt index d01e98e20..06798fbec 100644 --- a/app/src/main/java/org/tasks/ui/SubtaskControlSet.kt +++ b/app/src/main/java/org/tasks/ui/SubtaskControlSet.kt @@ -55,8 +55,8 @@ class SubtaskControlSet : TaskEditControlFragment() { setContent { MdcTheme { SubtaskRow( + originalFilter = viewModel.originalList, filter = viewModel.selectedList.collectAsStateLifecycleAware().value, - googleTask = googleTaskDao.watchGoogleTask(viewModel.task.id).collectAsStateLifecycleAware(initial = null).value, hasParent = viewModel.hasParent, desaturate = preferences.desaturateDarkMode, existingSubtasks = listViewModel.tasks.observeAsState(initial = emptyList()).value, diff --git a/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt b/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt index 22b1eca8d..2ecc262cb 100644 --- a/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt +++ b/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt @@ -130,7 +130,7 @@ class TaskEditViewModel @Inject constructor( } var selectedCalendar = MutableStateFlow(originalCalendar) - private val originalList: Filter = savedStateHandle[TaskEditFragment.EXTRA_LIST]!! + val originalList: Filter = savedStateHandle[TaskEditFragment.EXTRA_LIST]!! var selectedList = MutableStateFlow(originalList) private var originalLocation: Location? = savedStateHandle[TaskEditFragment.EXTRA_LOCATION] @@ -294,7 +294,7 @@ class TaskEditViewModel @Inject constructor( firebase?.addTask("subtasks") when (selectedList.value) { is GtasksFilter -> { - val googleTask = CaldavTask(subtask.id, (selectedList.value as GtasksFilter).remoteId) + val googleTask = CaldavTask(subtask.id, (selectedList.value as GtasksFilter).remoteId, remoteId = null) subtask.parent = task.id googleTask.isMoved = true googleTaskDao.insertAndShift(subtask, googleTask, false)