Add default reminders to new incoming ical tasks

pull/2104/head
Alex Baker 3 years ago
parent 738870ac6b
commit 63fda6f681

@ -114,7 +114,7 @@ class TaskCreator @Inject constructor(
preferences.getStringValue(R.string.p_default_location) preferences.getStringValue(R.string.p_default_location)
?.takeIf { it.isNotBlank() } ?.takeIf { it.isNotBlank() }
?.let { task.putTransitory(Place.KEY, it) } ?.let { task.putTransitory(Place.KEY, it) }
setDefaultReminders(preferences, task) task.setDefaultReminders(preferences)
val tags = ArrayList<String>() val tags = ArrayList<String>()
values?.entries?.forEach { (key, value) -> values?.entries?.forEach { (key, value) ->
when (key) { when (key) {
@ -167,13 +167,13 @@ class TaskCreator @Inject constructor(
} }
companion object { companion object {
private fun setDefaultReminders(preferences: Preferences, task: Task) { fun Task.setDefaultReminders(preferences: Preferences) {
task.randomReminder = DateUtilities.ONE_HOUR * preferences.getIntegerFromString( randomReminder = DateUtilities.ONE_HOUR * preferences.getIntegerFromString(
R.string.p_rmd_default_random_hours, R.string.p_rmd_default_random_hours,
0 0
) )
task.defaultReminders(preferences.defaultReminders) defaultReminders(preferences.defaultReminders)
task.ringFlags = preferences.defaultRingMode ringFlags = preferences.defaultRingMode
} }
private fun Any?.substitute(): String? = private fun Any?.substitute(): String? =

@ -12,6 +12,8 @@ import com.todoroo.astrid.data.Task.Companion.URGENCY_SPECIFIC_DAY
import com.todoroo.astrid.data.Task.Companion.URGENCY_SPECIFIC_DAY_TIME import com.todoroo.astrid.data.Task.Companion.URGENCY_SPECIFIC_DAY_TIME
import com.todoroo.astrid.helper.UUIDHelper import com.todoroo.astrid.helper.UUIDHelper
import com.todoroo.astrid.service.TaskCreator import com.todoroo.astrid.service.TaskCreator
import com.todoroo.astrid.service.TaskCreator.Companion.getDefaultAlarms
import com.todoroo.astrid.service.TaskCreator.Companion.setDefaultReminders
import net.fortuna.ical4j.model.DateTime import net.fortuna.ical4j.model.DateTime
import net.fortuna.ical4j.model.Parameter import net.fortuna.ical4j.model.Parameter
import net.fortuna.ical4j.model.Property import net.fortuna.ical4j.model.Property
@ -181,6 +183,7 @@ class iCalendar @Inject constructor(
existing?.task = id existing?.task = id
} }
val caldavTask = existing ?: CaldavTask(task.id, calendar.uuid, remote.uid, obj) val caldavTask = existing ?: CaldavTask(task.id, calendar.uuid, remote.uid, obj)
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) }
task.applyRemote(remote, local) task.applyRemote(remote, local)
@ -201,7 +204,10 @@ class iCalendar @Inject constructor(
tagDao.applyTags(task, tagDataDao, getTags(remote.categories)) tagDao.applyTags(task, tagDataDao, getTags(remote.categories))
} }
if (account.reminderSync) { if (isNew && remote.reminders.isEmpty()) {
task.setDefaultReminders(preferences)
alarmService.synchronizeAlarms(task.id, task.getDefaultAlarms().toMutableSet())
} else if (account.reminderSync) {
val alarms = alarmDao.getAlarms(task.id).onEach { val alarms = alarmDao.getAlarms(task.id).onEach {
it.id = 0 it.id = 0
it.task = 0 it.task = 0
@ -227,7 +233,7 @@ class iCalendar @Inject constructor(
if (!dirty) { if (!dirty) {
caldavTask.lastSync = task.modificationDate caldavTask.lastSync = task.modificationDate
} }
if (caldavTask.id == com.todoroo.astrid.data.Task.NO_ID) { if (isNew) {
caldavTask.id = caldavDao.insert(caldavTask) caldavTask.id = caldavDao.insert(caldavTask)
Timber.d("NEW %s", caldavTask) Timber.d("NEW %s", caldavTask)
} else { } else {

Loading…
Cancel
Save