From ba647dd733f0d0761d7a5b45ba22d5a18f773361 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Mon, 15 Apr 2013 11:11:13 -0700 Subject: [PATCH] Improved notification management to update/clear notifications and reschedule when the appropriate fields have changed during sync --- .../todoroo/astrid/actfm/sync/messages/MakeChanges.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/MakeChanges.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/MakeChanges.java index 1a76c6c9e..dd4b410ff 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/MakeChanges.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/MakeChanges.java @@ -35,6 +35,7 @@ import com.todoroo.astrid.data.TagMetadata; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.TaskListMetadata; import com.todoroo.astrid.data.UserActivity; +import com.todoroo.astrid.reminders.Notifications; import com.todoroo.astrid.reminders.ReminderService; import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.tags.TagService; @@ -233,10 +234,14 @@ public class MakeChanges extends ServerToClientMessage uuidChanged(oldUuid, uuid); } - if (changes.has(NameMaps.localPropertyToServerColumnName(NameMaps.TABLE_ID_TASKS, Task.DUE_DATE))) { + if (changes.has(NameMaps.localPropertyToServerColumnName(NameMaps.TABLE_ID_TASKS, Task.DUE_DATE)) || + changes.has(NameMaps.localPropertyToServerColumnName(NameMaps.TABLE_ID_TASKS, Task.COMPLETION_DATE))) { Task t = PluginServices.getTaskDao().fetch(uuid, ReminderService.NOTIFICATION_PROPERTIES); - if (t != null) + if (t != null) { + if ((changes.has("task_repeated") && t.getValue(Task.DUE_DATE) > DateUtilities.now()) || t.getValue(Task.COMPLETION_DATE) > 0) + Notifications.cancelNotifications(t.getId()); ReminderService.getInstance().scheduleAlarm(t); + } } JSONArray addTags = changes.optJSONArray("tag_added");