From 4155665bf4de10a95795a5c70386ac8eb55593e0 Mon Sep 17 00:00:00 2001 From: Tim Su Date: Fri, 29 Jul 2011 18:53:17 -0700 Subject: [PATCH] Fix for task save getting triggered even if no edits because of people control set --- api/src/com/todoroo/astrid/data/Task.java | 4 ++-- .../com/todoroo/astrid/actfm/EditPeopleControlSet.java | 6 ++++-- astrid/src/com/todoroo/astrid/service/MetadataService.java | 3 +++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/api/src/com/todoroo/astrid/data/Task.java b/api/src/com/todoroo/astrid/data/Task.java index c62b610db..a8df87e6a 100644 --- a/api/src/com/todoroo/astrid/data/Task.java +++ b/api/src/com/todoroo/astrid/data/Task.java @@ -240,8 +240,8 @@ public final class Task extends RemoteModel { defaultValues.put(LAST_SYNC.name, 0); defaultValues.put(REMOTE_ID.name, 0); defaultValues.put(USER_ID.name, 0); - defaultValues.put(USER.name, ""); - defaultValues.put(SHARED_WITH.name, ""); + defaultValues.put(USER.name, "{}"); + defaultValues.put(SHARED_WITH.name, "{}"); } @Override diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java b/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java index aca77240e..7689946b3 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java @@ -380,7 +380,8 @@ public class EditPeopleControlSet implements TaskEditControlSet { if(userJson == null || userJson.optLong("id", -1) == 0) { dirty = task.getValue(Task.USER_ID) == 0L ? dirty : true; task.setValue(Task.USER_ID, 0L); - task.setValue(Task.USER, "{}"); + if(!TextUtils.isEmpty(task.getValue(Task.USER))) + task.setValue(Task.USER, "{}"); } else { String user = userJson.toString(); dirty = task.getValue(Task.USER).equals(user) ? dirty : true; @@ -390,7 +391,8 @@ public class EditPeopleControlSet implements TaskEditControlSet { JSONObject sharedWith = parseSharedWithAndTags(); dirty = sharedWith.has("p"); - task.setValue(Task.SHARED_WITH, sharedWith.toString()); + if(!TextUtils.isEmpty(task.getValue(Task.SHARED_WITH)) || sharedWith.length() != 0) + task.setValue(Task.SHARED_WITH, sharedWith.toString()); if(dirty) taskService.save(task); diff --git a/astrid/src/com/todoroo/astrid/service/MetadataService.java b/astrid/src/com/todoroo/astrid/service/MetadataService.java index 0818ed080..c6c3252c8 100644 --- a/astrid/src/com/todoroo/astrid/service/MetadataService.java +++ b/astrid/src/com/todoroo/astrid/service/MetadataService.java @@ -12,6 +12,7 @@ import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Query; +import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.data.Metadata; @@ -101,6 +102,7 @@ public class MetadataService { HashSet newMetadataValues = new HashSet(); for(Metadata metadatum : metadata) { metadatum.setValue(Metadata.TASK, taskId); + metadatum.clearValue(Metadata.CREATION_DATE); metadatum.clearValue(Metadata.ID); ContentValues values = metadatum.getMergedValues(); @@ -141,6 +143,7 @@ public class MetadataService { // everything that remains shall be written for(ContentValues values : newMetadataValues) { item.clear(); + item.setValue(Metadata.CREATION_DATE, DateUtilities.now()); item.mergeWith(values); metadataDao.persist(item); dirty = true;