Add default reminders to new incoming ical tasks

pull/2104/head
Alex Baker 1 year ago
parent 738870ac6b
commit 63fda6f681

@ -114,7 +114,7 @@ class TaskCreator @Inject constructor(
preferences.getStringValue(R.string.p_default_location)
?.takeIf { it.isNotBlank() }
?.let { task.putTransitory(Place.KEY, it) }
setDefaultReminders(preferences, task)
task.setDefaultReminders(preferences)
val tags = ArrayList<String>()
values?.entries?.forEach { (key, value) ->
when (key) {
@ -167,13 +167,13 @@ class TaskCreator @Inject constructor(
}
companion object {
private fun setDefaultReminders(preferences: Preferences, task: Task) {
task.randomReminder = DateUtilities.ONE_HOUR * preferences.getIntegerFromString(
fun Task.setDefaultReminders(preferences: Preferences) {
randomReminder = DateUtilities.ONE_HOUR * preferences.getIntegerFromString(
R.string.p_rmd_default_random_hours,
0
)
task.defaultReminders(preferences.defaultReminders)
task.ringFlags = preferences.defaultRingMode
defaultReminders(preferences.defaultReminders)
ringFlags = preferences.defaultRingMode
}
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.helper.UUIDHelper
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.Parameter
import net.fortuna.ical4j.model.Property
@ -181,6 +183,7 @@ class iCalendar @Inject constructor(
existing?.task = id
}
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 local = vtodoCache.getVtodo(calendar, caldavTask)?.let { fromVtodo(it) }
task.applyRemote(remote, local)
@ -201,7 +204,10 @@ class iCalendar @Inject constructor(
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 {
it.id = 0
it.task = 0
@ -227,7 +233,7 @@ class iCalendar @Inject constructor(
if (!dirty) {
caldavTask.lastSync = task.modificationDate
}
if (caldavTask.id == com.todoroo.astrid.data.Task.NO_ID) {
if (isNew) {
caldavTask.id = caldavDao.insert(caldavTask)
Timber.d("NEW %s", caldavTask)
} else {

Loading…
Cancel
Save