Make CaldavTask.task immutable

pull/2349/head
Alex Baker 1 year ago
parent e1aed0f1af
commit a45959052b

@ -257,8 +257,11 @@ class GoogleTaskDaoTests : InjectingTestCase() {
private suspend fun insert(googleTask: CaldavTask, top: Boolean = false) {
val task = newTask()
taskDao.createNew(task)
googleTask.task = task.id
googleTaskDao.insertAndShift(task, googleTask, top)
googleTaskDao.insertAndShift(
task,
googleTask.copy(task = task.id),
top
)
}
private suspend fun getByRemoteId(remoteId: String): CaldavTask {

@ -262,8 +262,7 @@ class TasksJsonImporter @Inject constructor(
}
?.let { taskAttachmentDao.insert(it) }
backup.caldavTasks?.forEach { caldavTask ->
caldavTask.task = taskId
caldavDao.insert(caldavTask)
caldavDao.insert(caldavTask.copy(task = taskId))
}
backup.vtodo?.let {
val caldavTask =

@ -199,18 +199,21 @@ class iCalendar @Inject constructor(
obj: String? = null,
eTag: String? = null
) {
val task = existing?.task?.let { taskDao.fetch(it) }
?: taskCreator.createWithValues("").apply {
readOnly = calendar.access == ACCESS_READ_ONLY
taskDao.createNew(this)
existing?.task = id
}
val caldavTask = existing ?: CaldavTask(
task = task.id,
calendar = calendar.uuid,
remoteId = remote.uid,
`object` = obj
)
val task = existing?.task
?.let { taskDao.fetch(it) }
?: taskCreator.createWithValues("").apply {
readOnly = calendar.access == ACCESS_READ_ONLY
taskDao.createNew(this)
}
val caldavTask =
existing
?.copy(task = task.id)
?: CaldavTask(
task = task.id,
calendar = calendar.uuid,
remoteId = remote.uid,
`object` = obj
)
val isNew = caldavTask.id == com.todoroo.astrid.data.Task.NO_ID
val dirty = task.modificationDate > caldavTask.lastSync || caldavTask.lastSync == 0L
val local = vtodoCache.getVtodo(calendar, caldavTask)?.let { fromVtodo(it) }

@ -26,7 +26,7 @@ data class CaldavTask(
val id: Long = 0,
@ColumnInfo(name = "cd_task", index = true)
@Transient
var task: Long,
val task: Long,
@ColumnInfo(name = "cd_calendar")
var calendar: String?,
@ColumnInfo(name = "cd_remote_id")

@ -377,13 +377,18 @@ class GoogleTaskSynchronizer @Inject constructor(
alarmDao.insert(task.getDefaultAlarms())
}
taskDao.save(task)
googleTask.lastSync = task.modificationDate
googleTask.task = task.id
if (googleTask.id == 0L) {
googleTaskDao.insert(googleTask)
} else {
googleTaskDao.update(googleTask)
}
googleTask
.copy(
task = task.id,
lastSync = task.modificationDate,
)
.let {
if (it.id == 0L) {
googleTaskDao.insert(it)
} else {
googleTaskDao.update(it)
}
}
}
companion object {

Loading…
Cancel
Save