Fix for task save getting triggered even if no edits because of people control set

pull/14/head
Tim Su 13 years ago
parent 14332867da
commit 4155665bf4

@ -240,8 +240,8 @@ public final class Task extends RemoteModel {
defaultValues.put(LAST_SYNC.name, 0); defaultValues.put(LAST_SYNC.name, 0);
defaultValues.put(REMOTE_ID.name, 0); defaultValues.put(REMOTE_ID.name, 0);
defaultValues.put(USER_ID.name, 0); defaultValues.put(USER_ID.name, 0);
defaultValues.put(USER.name, ""); defaultValues.put(USER.name, "{}");
defaultValues.put(SHARED_WITH.name, ""); defaultValues.put(SHARED_WITH.name, "{}");
} }
@Override @Override

@ -380,7 +380,8 @@ public class EditPeopleControlSet implements TaskEditControlSet {
if(userJson == null || userJson.optLong("id", -1) == 0) { if(userJson == null || userJson.optLong("id", -1) == 0) {
dirty = task.getValue(Task.USER_ID) == 0L ? dirty : true; dirty = task.getValue(Task.USER_ID) == 0L ? dirty : true;
task.setValue(Task.USER_ID, 0L); task.setValue(Task.USER_ID, 0L);
task.setValue(Task.USER, "{}"); if(!TextUtils.isEmpty(task.getValue(Task.USER)))
task.setValue(Task.USER, "{}");
} else { } else {
String user = userJson.toString(); String user = userJson.toString();
dirty = task.getValue(Task.USER).equals(user) ? dirty : true; dirty = task.getValue(Task.USER).equals(user) ? dirty : true;
@ -390,7 +391,8 @@ public class EditPeopleControlSet implements TaskEditControlSet {
JSONObject sharedWith = parseSharedWithAndTags(); JSONObject sharedWith = parseSharedWithAndTags();
dirty = sharedWith.has("p"); 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) if(dirty)
taskService.save(task); taskService.save(task);

@ -12,6 +12,7 @@ import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.dao.MetadataDao; import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
@ -101,6 +102,7 @@ public class MetadataService {
HashSet<ContentValues> newMetadataValues = new HashSet<ContentValues>(); HashSet<ContentValues> newMetadataValues = new HashSet<ContentValues>();
for(Metadata metadatum : metadata) { for(Metadata metadatum : metadata) {
metadatum.setValue(Metadata.TASK, taskId); metadatum.setValue(Metadata.TASK, taskId);
metadatum.clearValue(Metadata.CREATION_DATE);
metadatum.clearValue(Metadata.ID); metadatum.clearValue(Metadata.ID);
ContentValues values = metadatum.getMergedValues(); ContentValues values = metadatum.getMergedValues();
@ -141,6 +143,7 @@ public class MetadataService {
// everything that remains shall be written // everything that remains shall be written
for(ContentValues values : newMetadataValues) { for(ContentValues values : newMetadataValues) {
item.clear(); item.clear();
item.setValue(Metadata.CREATION_DATE, DateUtilities.now());
item.mergeWith(values); item.mergeWith(values);
metadataDao.persist(item); metadataDao.persist(item);
dirty = true; dirty = true;

Loading…
Cancel
Save