Make CaldavTask.task immutable

pull/2349/head
Alex Baker 3 years ago
parent e1aed0f1af
commit a45959052b

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

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

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

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

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

Loading…
Cancel
Save