Replace some setter usage with constructors

pull/2672/head
Alex Baker 7 months ago
parent 8058414137
commit 6c031925ba

@ -12,9 +12,10 @@ open class NewSyncTestCase : InjectingTestCase() {
@Inject lateinit var tagDataDao: TagDataDao
suspend fun createTask(): Task {
val task = Task()
task.title = SYNC_TASK_TITLE
task.priority = SYNC_TASK_IMPORTANCE
val task = Task(
title = SYNC_TASK_TITLE,
priority = SYNC_TASK_IMPORTANCE,
)
taskDao.createNew(task)
return task
}

@ -210,9 +210,7 @@ open class TaskAdapter(
SORT_IMPORTANCE -> {
val newPriority = dataSource.nearestHeader(if (pos == 0) 1 else pos).toInt()
if (newPriority != task.priority) {
val t = task.task
t.priority = newPriority
taskDao.save(t)
taskDao.save(task.task.copy(priority = newPriority))
}
}
SORT_LIST -> taskMover.move(task.id, dataSource.nearestHeader(if (pos == 0) 1 else pos))

@ -135,14 +135,13 @@ class TaskCreator @Inject constructor(
* base task model.
*/
internal suspend fun create(values: Map<String, Any>?, title: String?): Task {
val task = Task()
task.creationDate = DateUtilities.now()
task.modificationDate = DateUtilities.now()
if (title != null) {
task.title = title.trim { it <= ' ' }
}
task.uuid = UUIDHelper.newUUID()
task.priority = preferences.defaultPriority
val task = Task(
title = title?.trim { it <= ' ' },
creationDate = DateUtilities.now(),
modificationDate = DateUtilities.now(),
remoteId = UUIDHelper.newUUID(),
priority = preferences.defaultPriority,
)
preferences.getStringValue(R.string.p_default_recurrence)
?.takeIf { it.isNotBlank() }
?.let {

@ -3,6 +3,7 @@ package com.todoroo.astrid.service
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task
import com.todoroo.astrid.data.Task.Companion.NO_ID
import com.todoroo.astrid.gcal.GCalHelper
import org.tasks.LocalBroadcastManager
import org.tasks.data.Alarm
@ -47,25 +48,25 @@ class TaskDuplicator @Inject constructor(
.also { localBroadcastManager.broadcastRefresh() }
}
private suspend fun clone(clone: Task, parentId: Long): Task {
val originalId = clone.id
with(clone) {
creationDate = DateUtilities.now()
modificationDate = DateUtilities.now()
reminderLast = 0
completionDate = 0L
calendarURI = ""
parent = parentId
uuid = Task.NO_UUID
suppressSync()
suppressRefresh()
}
private suspend fun clone(task: Task, parentId: Long): Task {
val clone = task.copy(
id = NO_ID,
creationDate = DateUtilities.now(),
modificationDate = DateUtilities.now(),
reminderLast = 0,
completionDate = 0L,
calendarURI = "",
parent = parentId,
remoteId = Task.NO_UUID,
)
clone.suppressSync()
clone.suppressRefresh()
val newId = taskDao.createNew(clone)
val tags = tagDataDao.getTagDataForTask(originalId)
val tags = tagDataDao.getTagDataForTask(task.id)
if (tags.isNotEmpty()) {
tagDao.insert(tags.map { Tag(clone, it) })
}
val googleTask = googleTaskDao.getByTaskId(originalId)
val googleTask = googleTaskDao.getByTaskId(task.id)
val addToTop = preferences.addTasksToTop()
if (googleTask != null) {
googleTaskDao.insertAndShift(
@ -78,7 +79,7 @@ class TaskDuplicator @Inject constructor(
addToTop
)
}
val caldavTask = caldavDao.getTask(originalId)
val caldavTask = caldavDao.getTask(task.id)
if (caldavTask != null) {
val newDavTask = CaldavTask(
task = clone.id,
@ -90,18 +91,18 @@ class TaskDuplicator @Inject constructor(
}
caldavDao.insert(clone, newDavTask, addToTop)
}
for (g in locationDao.getGeofencesForTask(originalId)) {
for (g in locationDao.getGeofencesForTask(task.id)) {
locationDao.insert(
Geofence(clone.id, g.place, g.isArrival, g.isDeparture))
}
val alarms = alarmDao.getAlarms(originalId)
val alarms = alarmDao.getAlarms(task.id)
if (alarms.isNotEmpty()) {
alarmDao.insert(alarms.map { Alarm(clone.id, it.time, it.type) })
}
gcalHelper.createTaskEventIfEnabled(clone)
taskDao.save(clone, null) // TODO: delete me
taskAttachmentDao
.getAttachmentsForTask(originalId)
.getAttachmentsForTask(task.id)
.map {
Attachment(
task = clone.id,
@ -110,7 +111,7 @@ class TaskDuplicator @Inject constructor(
)
}
.let { taskAttachmentDao.insert(it) }
getDirectChildren(originalId).forEach { subtask ->
getDirectChildren(task.id).forEach { subtask ->
clone(subtask, newId)
}
return clone

@ -69,8 +69,7 @@ class PriorityPicker : DialogFragment() {
taskDao
.fetch(taskIds.toList())
.forEach {
it.priority = priorityPickerViewModel.priority.value
taskDao.save(it)
taskDao.save(it.copy(priority = priorityPickerViewModel.priority.value))
}
}
dismiss()

@ -145,18 +145,20 @@ class AlarmCalculatorTest {
@Test
fun scheduleRelativeAfterDue() {
val alarm = alarmCalculator.toAlarmEntry(
newTask(with(DUE_DATE, now)),
Alarm(0L, DAYS.toMillis(1), TYPE_REL_END)
)
freezeAt(DateTime(2023, 11, 3, 17, 13)) {
val alarm = alarmCalculator.toAlarmEntry(
newTask(with(DUE_DATE, newDateTime())),
Alarm(0L, DAYS.toMillis(1), TYPE_REL_END)
)
assertEquals(
newAlarmEntry(
with(TIME, now.plusDays(1).startOfDay().withHourOfDay(13)),
with(TYPE, TYPE_REL_END)
),
alarm
)
assertEquals(
newAlarmEntry(
with(TIME, DateTime(2023, 11, 4, 13, 0, 0)),
with(TYPE, TYPE_REL_END)
),
alarm
)
}
}
@Test
@ -177,18 +179,20 @@ class AlarmCalculatorTest {
@Test
fun scheduleRelativeAfterStart() = runBlocking {
val alarm = alarmCalculator.toAlarmEntry(
newTask(with(DUE_DATE, now), with(HIDE_TYPE, HIDE_UNTIL_DUE)),
Alarm(0, DAYS.toMillis(1), TYPE_REL_START)
)
freezeAt(DateTime(2023, 11, 3, 17, 13)) {
val alarm = alarmCalculator.toAlarmEntry(
newTask(with(DUE_DATE, newDateTime()), with(HIDE_TYPE, HIDE_UNTIL_DUE)),
Alarm(0, DAYS.toMillis(1), TYPE_REL_START)
)
assertEquals(
newAlarmEntry(
with(TIME, now.plusDays(1).startOfDay().withHourOfDay(13)),
with(TYPE, TYPE_REL_START)
),
alarm
)
assertEquals(
newAlarmEntry(
with(TIME, DateTime(2023, 11, 4, 13, 0)),
with(TYPE, TYPE_REL_START)
),
alarm
)
}
}
@Test

@ -8,7 +8,6 @@ import com.natpryce.makeiteasy.PropertyValue
import com.todoroo.astrid.data.Task
import com.todoroo.astrid.data.Task.Companion.HIDE_UNTIL_SPECIFIC_DAY
import com.todoroo.astrid.data.Task.Companion.NO_UUID
import org.tasks.Strings
import org.tasks.date.DateTimeUtils
import org.tasks.makers.Maker.make
import org.tasks.repeats.RecurrenceUtils.newRecur
@ -21,7 +20,6 @@ object TaskMaker {
val START_DATE: Property<Task, DateTime?> = newProperty()
val REMINDER_LAST: Property<Task, DateTime?> = newProperty()
val HIDE_TYPE: Property<Task, Int> = newProperty()
val REMINDERS: Property<Task, Int> = newProperty()
val MODIFICATION_TIME: Property<Task, DateTime> = newProperty()
val CREATION_TIME: Property<Task, DateTime> = newProperty()
val COMPLETION_TIME: Property<Task, DateTime> = newProperty()
@ -37,35 +35,32 @@ object TaskMaker {
val ORDER: Property<Task, Long> = newProperty()
private val instantiator = Instantiator { lookup: PropertyLookup<Task> ->
val task = Task()
val title = lookup.valueOf(TITLE, null as String?)
if (!Strings.isNullOrEmpty(title)) {
task.title = title!!
}
val id = lookup.valueOf(ID, Task.NO_ID)
if (id != Task.NO_ID) {
task.id = id
}
val priority = lookup.valueOf(PRIORITY, -1)
if (priority >= 0) {
task.priority = priority
}
val dueDate = lookup.valueOf(DUE_DATE, null as DateTime?)
if (dueDate != null) {
task.dueDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY, dueDate.millis)
}
val dueTime = lookup.valueOf(DUE_TIME, null as DateTime?)
if (dueTime != null) {
task.dueDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, dueTime.millis)
}
val completionTime = lookup.valueOf(COMPLETION_TIME, null as DateTime?)
if (completionTime != null) {
task.completionDate = completionTime.millis
}
val deletedTime = lookup.valueOf(DELETION_TIME, null as DateTime?)
if (deletedTime != null) {
task.deletionDate = deletedTime.millis
}
val creationTime = lookup.valueOf(CREATION_TIME, DateTimeUtils.newDateTime())
val task = Task(
id = lookup.valueOf(ID, Task.NO_ID),
title = lookup.valueOf(TITLE, null as String?),
priority = lookup.valueOf(PRIORITY, Task.Priority.NONE),
dueDate = lookup.valueOf(DUE_DATE, null as DateTime?)
?.let { Task.createDueDate(Task.URGENCY_SPECIFIC_DAY, it.millis) }
?: lookup.valueOf(DUE_TIME, null as DateTime?)
?.let { Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, it.millis) }
?: 0L,
completionDate = lookup.valueOf(COMPLETION_TIME, null as DateTime?)?.millis ?: 0L,
deletionDate = lookup.valueOf(DELETION_TIME, null as DateTime?)?.millis ?: 0L,
reminderLast = lookup.valueOf(REMINDER_LAST, null as DateTime?)?.millis ?: 0L,
recurrence = lookup.valueOf(RECUR, null as String?)?.let { newRecur(it).toString() },
repeatFrom = if (lookup.valueOf(AFTER_COMPLETE, false))
Task.RepeatFrom.COMPLETION_DATE
else
Task.RepeatFrom.DUE_DATE,
notes = lookup.valueOf(DESCRIPTION, null as String?),
isCollapsed = lookup.valueOf(COLLAPSED, false),
remoteId = lookup.valueOf(UUID, NO_UUID),
parent = lookup.valueOf(PARENT, 0L),
order = lookup.valueOf(ORDER, null as Long?),
creationDate = creationTime.millis,
modificationDate = lookup.valueOf(MODIFICATION_TIME, creationTime).millis,
)
lookup.valueOf(START_DATE, null as DateTime?)?.let {
task.hideUntil = task.createHideUntil(HIDE_UNTIL_SPECIFIC_DAY, it.millis)
}
@ -73,30 +68,6 @@ object TaskMaker {
if (hideType >= 0) {
task.hideUntil = task.createHideUntil(hideType, 0)
}
val reminderFlags = lookup.valueOf(REMINDERS, -1)
if (reminderFlags >= 0) {
task.ringFlags = reminderFlags
}
val reminderLast = lookup.valueOf(REMINDER_LAST, null as DateTime?)
if (reminderLast != null) {
task.reminderLast = reminderLast.millis
}
lookup.valueOf(RECUR, null as String?)?.let {
task.setRecurrence(newRecur(it))
}
task.repeatFrom = if (lookup.valueOf(AFTER_COMPLETE, false)) {
Task.RepeatFrom.COMPLETION_DATE
} else {
Task.RepeatFrom.DUE_DATE
}
task.notes = lookup.valueOf(DESCRIPTION, null as String?)
task.isCollapsed = lookup.valueOf(COLLAPSED, false)
task.uuid = lookup.valueOf(UUID, NO_UUID)
val creationTime = lookup.valueOf(CREATION_TIME, DateTimeUtils.newDateTime())
task.creationDate = creationTime.millis
task.modificationDate = lookup.valueOf(MODIFICATION_TIME, creationTime).millis
task.parent = lookup.valueOf(PARENT, 0L)
task.order = lookup.valueOf(ORDER, null as Long?)
task
}

Loading…
Cancel
Save