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(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

@ -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);

@ -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<ContentValues> newMetadataValues = new HashSet<ContentValues>();
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;

Loading…
Cancel
Save