diff --git a/app/src/main/java/org/tasks/sync/microsoft/MicrosoftConverter.kt b/app/src/main/java/org/tasks/sync/microsoft/MicrosoftConverter.kt index e725db88e..0782133ff 100644 --- a/app/src/main/java/org/tasks/sync/microsoft/MicrosoftConverter.kt +++ b/app/src/main/java/org/tasks/sync/microsoft/MicrosoftConverter.kt @@ -25,14 +25,15 @@ object MicrosoftConverter { fun Task.applySubtask( parent: Long, + parentCompletionDate: Long, checklistItem: Tasks.Task.ChecklistItem, ) { this.parent = parent title = checklistItem.displayName completionDate = if (checklistItem.isChecked) { - checklistItem.checkedDateTime?.parseDateTime() ?: System.currentTimeMillis() + checklistItem.checkedDateTime.parseDateTime() } else { - 0L + parentCompletionDate } creationDate = checklistItem.createdDateTime.parseDateTime() } @@ -120,7 +121,7 @@ object MicrosoftConverter { } else { Tasks.Task.Status.notStarted }, - categories = tags.map { it.name!! }.takeIf { it.isNotEmpty() }, + categories = tags.map { it.name!! }.takeIf { it.isNotEmpty() } ?: emptyList(), dueDateTime = if (hasDueDate()) { Tasks.Task.DateTime( dateTime = DateTime(dueDate).startOfDay().toString(DATE_TIME_FORMAT), diff --git a/app/src/main/java/org/tasks/sync/microsoft/MicrosoftSynchronizer.kt b/app/src/main/java/org/tasks/sync/microsoft/MicrosoftSynchronizer.kt index 481e3d6e8..7c2026921 100644 --- a/app/src/main/java/org/tasks/sync/microsoft/MicrosoftSynchronizer.kt +++ b/app/src/main/java/org/tasks/sync/microsoft/MicrosoftSynchronizer.kt @@ -11,15 +11,14 @@ import dagger.hilt.android.qualifiers.ApplicationContext import io.ktor.client.call.body import io.ktor.http.isSuccess import kotlinx.serialization.json.Json -import org.tasks.broadcast.RefreshBroadcaster import org.tasks.Strings.isNullOrEmpty import org.tasks.analytics.Firebase +import org.tasks.broadcast.RefreshBroadcaster import org.tasks.caldav.VtodoCache import org.tasks.data.dao.CaldavDao import org.tasks.data.dao.TagDao import org.tasks.data.dao.TagDataDao import org.tasks.data.entity.CaldavAccount -import org.tasks.data.entity.CaldavAccount.Companion.ERROR_UNAUTHORIZED import org.tasks.data.entity.CaldavCalendar import org.tasks.data.entity.CaldavCalendar.Companion.ACCESS_OWNER import org.tasks.data.entity.CaldavCalendar.Companion.ACCESS_READ_WRITE @@ -403,6 +402,7 @@ class MicrosoftSynchronizer @Inject constructor( list = list, parentId = task.id, parentRemoteId = caldavTask.remoteId!!, + parentCompletionDate = task.completionDate, checklistItems = it, ) } @@ -421,6 +421,7 @@ class MicrosoftSynchronizer @Inject constructor( list: CaldavCalendar, parentId: Long, parentRemoteId: String, + parentCompletionDate: Long, checklistItems: List, ) { val existingSubtasks: List = taskDao.getChildren(parentId).let { caldavDao.getTasks(it) } @@ -451,6 +452,7 @@ class MicrosoftSynchronizer @Inject constructor( } else { task.applySubtask( parent = parentId, + parentCompletionDate = parentCompletionDate, checklistItem = item, ) } diff --git a/app/src/main/java/org/tasks/sync/microsoft/Tasks.kt b/app/src/main/java/org/tasks/sync/microsoft/Tasks.kt index d079ae3e7..55873f69c 100644 --- a/app/src/main/java/org/tasks/sync/microsoft/Tasks.kt +++ b/app/src/main/java/org/tasks/sync/microsoft/Tasks.kt @@ -22,7 +22,7 @@ data class Tasks( @EncodeDefault val body: Body? = null, @EncodeDefault val importance: Importance = Importance.low, @EncodeDefault val status: Status = Status.notStarted, - @EncodeDefault val categories: List? = null, + val categories: List? = null, val isReminderOn: Boolean = false, val createdDateTime: String? = null, val lastModifiedDateTime: String? = null, @@ -31,7 +31,7 @@ data class Tasks( val linkedResources: List? = null, @EncodeDefault val recurrence: Recurrence? = null, @EncodeDefault val reminderDateTime: DateTime? = null, - @EncodeDefault val checklistItems: List? = null, + val checklistItems: List? = null, @SerialName("@removed") val removed: Removed? = null, ) { @Serializable