Microsoft Graph API doesn't support order

pull/3221/head
Alex Baker 11 months ago
parent 8edf0de950
commit 833eb81114

@ -55,7 +55,7 @@ class TaskMover @Inject constructor(
val taskIds = tasks.map { it.id }
taskDao.setParent(0, ids.intersect(taskIds.toSet()).toList())
tasks.forEach { performMove(it, selectedList) }
if (selectedList.isIcalendar) {
if (!selectedList.isGoogleTasks) {
caldavDao.updateParents(selectedList.uuid)
}
taskIds.dbchunk().forEach {

@ -24,12 +24,10 @@ object MicrosoftConverter {
private const val DATE_TIME_UTC_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS0000'Z'"
fun Task.applySubtask(
index: Int,
parent: Long,
checklistItem: Tasks.Task.ChecklistItem,
) {
this.parent = parent
order = index.toLong()
title = checklistItem.displayName
completionDate = if (checklistItem.isChecked) {
checklistItem.checkedDateTime?.parseDateTime() ?: System.currentTimeMillis()
@ -95,7 +93,6 @@ object MicrosoftConverter {
.build()
.toString()
}
// checklist to subtasks
// sync reminders
// sync files
}

@ -426,7 +426,7 @@ class MicrosoftSynchronizer @Inject constructor(
existingSubtasks
.filter { it.remoteId?.isNotBlank() == true && !remoteSubtaskIds.contains(it.remoteId) }
.let { taskDeleter.delete(it.map { it.task }) }
checklistItems.forEachIndexed { index, item ->
checklistItems.forEach { item ->
val existing = caldavDao.getTaskByRemoteId(list.uuid!!, item.id!!)
val task = existing?.task?.let { taskDao.fetch(it) }
?: taskCreator.createWithValues("").apply {
@ -445,11 +445,9 @@ class MicrosoftSynchronizer @Inject constructor(
val dirty = existing != null && task.modificationDate > existing.lastSync
if (dirty) {
// TODO: merge with vtodo cached value, similar to iCalendarMerge.kt
task.order = index.toLong()
task.parent = parentId
} else {
task.applySubtask(
index = index,
parent = parentId,
checklistItem = item,
)

@ -5,6 +5,7 @@ import org.tasks.data.NO_COUNT
import org.tasks.data.dao.TaskDao.TaskCriteria.activeAndVisible
import org.tasks.data.entity.CaldavAccount
import org.tasks.data.entity.CaldavAccount.Companion.TYPE_GOOGLE_TASKS
import org.tasks.data.entity.CaldavAccount.Companion.TYPE_MICROSOFT
import org.tasks.data.entity.CaldavCalendar
import org.tasks.data.entity.CaldavTask
import org.tasks.data.entity.Task
@ -53,17 +54,17 @@ data class CaldavFilter(
override val isReadOnly: Boolean
get() = calendar.access == CaldavCalendar.ACCESS_READ_ONLY
// Microsoft Graph API doesn't support order
// https://techcommunity.microsoft.com/idea/microsoft365developerplatform/to-do-graphapi-to-include-orderdatetime-field---custom-ordering-of-to-do-tasks-t/3298392#M940
override fun supportsManualSort() = true
override fun areItemsTheSame(other: FilterListItem): Boolean {
return other is CaldavFilter && calendar.id == other.calendar.id
}
val isGoogleTasks by lazy {
account.accountType == TYPE_GOOGLE_TASKS
}
val isGoogleTasks: Boolean
get() = account.accountType == TYPE_GOOGLE_TASKS
val isIcalendar by lazy {
account.accountType != TYPE_GOOGLE_TASKS
}
val isIcalendar: Boolean
get() = account.accountType !in listOf(TYPE_GOOGLE_TASKS, TYPE_MICROSOFT)
}

Loading…
Cancel
Save