From 63fda6f68181c6bae55fc2232284883dce382a55 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Thu, 5 Jan 2023 10:09:20 -0600 Subject: [PATCH] Add default reminders to new incoming ical tasks --- .../java/com/todoroo/astrid/service/TaskCreator.kt | 10 +++++----- app/src/main/java/org/tasks/caldav/iCalendar.kt | 10 ++++++++-- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/todoroo/astrid/service/TaskCreator.kt b/app/src/main/java/com/todoroo/astrid/service/TaskCreator.kt index 4f8b305c8..2abd10ab6 100644 --- a/app/src/main/java/com/todoroo/astrid/service/TaskCreator.kt +++ b/app/src/main/java/com/todoroo/astrid/service/TaskCreator.kt @@ -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() 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? = diff --git a/app/src/main/java/org/tasks/caldav/iCalendar.kt b/app/src/main/java/org/tasks/caldav/iCalendar.kt index f4b60a81b..53b83f2f3 100644 --- a/app/src/main/java/org/tasks/caldav/iCalendar.kt +++ b/app/src/main/java/org/tasks/caldav/iCalendar.kt @@ -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 {