Added some failsafes to hopefully stop sending TLM with no tag or filter ids

pull/14/head
Sam Bosley 12 years ago
parent b7a46262f2
commit 8b9536b75e

@ -792,11 +792,24 @@ public class ActFmLoginActivity extends FragmentActivity implements AuthListener
userActivityDao.update(UserActivity.UUID.eq(oldUuid), ua);
}
TodorooCursor<TaskListMetadata> tlmCursor = taskListMetadataDao.query(Query.select(TaskListMetadata.ID, TaskListMetadata.UUID, TaskListMetadata.TASK_IDS, TaskListMetadata.CHILD_TAG_IDS));
TodorooCursor<TaskListMetadata> tlmCursor = taskListMetadataDao.query(Query.select(TaskListMetadata.ID, TaskListMetadata.UUID, TaskListMetadata.FILTER, TaskListMetadata.TAG_UUID,
TaskListMetadata.TASK_IDS, TaskListMetadata.CHILD_TAG_IDS));
try {
for (tlmCursor.moveToFirst(); !tlmCursor.isAfterLast(); tlmCursor.moveToNext()) {
tlm.clear();
tlm.readFromCursor(tlmCursor);
String filterId = tlm.getValue(TaskListMetadata.FILTER);
String tagUuid = tlm.getValue(TaskListMetadata.TAG_UUID);
// Hack to make sure outstanding entry gets created for filter or uuid
if (!TextUtils.isEmpty(filterId)) {
tlm.setValue(TaskListMetadata.FILTER, ""); //$NON-NLS-1$
tlm.setValue(TaskListMetadata.FILTER, filterId);
} else if (!RemoteModel.isUuidEmpty(tagUuid)) {
tlm.setValue(TaskListMetadata.TAG_UUID, ""); //$NON-NLS-1$
tlm.setValue(TaskListMetadata.TAG_UUID, tagUuid);
}
tlm.setValue(TaskListMetadata.UUID, uuidTaskListMetadataMap.get(tlm.getUuid()));
tlm.setValue(TaskListMetadata.PUSHED_AT, 0L);
String taskIds = tlm.getValue(TaskListMetadata.TASK_IDS);

@ -3,6 +3,8 @@ package com.todoroo.astrid.actfm.sync.messages;
import java.util.HashSet;
import java.util.Set;
import android.text.TextUtils;
import com.todoroo.astrid.dao.TaskListMetadataDao;
import com.todoroo.astrid.dao.TaskListMetadataOutstandingDao;
import com.todoroo.astrid.data.RemoteModel;
@ -11,8 +13,11 @@ import com.todoroo.astrid.data.TaskListMetadataOutstanding;
public class TaskListMetadataChangesHappened extends ChangesHappened<TaskListMetadata, TaskListMetadataOutstanding> {
private final TaskListMetadataDao dao;
public TaskListMetadataChangesHappened(long id, Class<TaskListMetadata> modelClass, TaskListMetadataDao modelDao, TaskListMetadataOutstandingDao outstandingDao) {
super(id, modelClass, modelDao, outstandingDao);
this.dao = modelDao;
}
@Override
@ -22,6 +27,7 @@ public class TaskListMetadataChangesHappened extends ChangesHappened<TaskListMet
// Collapses/removes redundant task list orders from the list--only send the most recent ordering
Set<Long> removedChanges = new HashSet<Long>();
boolean foundOrderChange = false;
boolean foundTagOrFilterId = false;
for (int i = changes.size() - 1; i >= 0; i--) {
TaskListMetadataOutstanding oe = changes.get(i);
String column = oe.getValue(TaskListMetadataOutstanding.COLUMN_STRING);
@ -36,10 +42,39 @@ public class TaskListMetadataChangesHappened extends ChangesHappened<TaskListMet
if (RemoteModel.isUuidEmpty(oe.getValue(TaskListMetadataOutstanding.VALUE_STRING))) {
changes.remove(i);
removedChanges.add(oe.getId());
} else {
foundTagOrFilterId = true;
}
}
}
if (pushedAt == 0 && !foundTagOrFilterId) { // Try to validate message
TaskListMetadata tlm = dao.fetch(uuid, TaskListMetadata.FILTER, TaskListMetadata.TAG_UUID);
String filterId = tlm.getValue(TaskListMetadata.FILTER);
String tagUuid = tlm.getValue(TaskListMetadata.TAG_UUID);
TaskListMetadataOutstanding tlmo = new TaskListMetadataOutstanding();
boolean validChange = false;
if (!TextUtils.isEmpty(filterId)) {
validChange = true;
tlmo.setValue(TaskListMetadataOutstanding.ENTITY_ID_PROPERTY, id);
tlmo.setValue(TaskListMetadataOutstanding.COLUMN_STRING, TaskListMetadata.FILTER.name);
tlmo.setValue(TaskListMetadataOutstanding.VALUE_STRING, filterId);
tlmo.setValue(TaskListMetadataOutstanding.CREATED_AT, 0L);
} else if (!RemoteModel.isUuidEmpty(tagUuid)) {
validChange = true;
tlmo.setValue(TaskListMetadataOutstanding.ENTITY_ID_PROPERTY, id);
tlmo.setValue(TaskListMetadataOutstanding.COLUMN_STRING, TaskListMetadata.TAG_UUID.name);
tlmo.setValue(TaskListMetadataOutstanding.VALUE_STRING, tagUuid);
tlmo.setValue(TaskListMetadataOutstanding.CREATED_AT, 0L);
}
if (validChange) {
changes.add(tlmo);
}
}
outstandingDao.deleteWhere(TaskListMetadataOutstanding.ID.in(removedChanges.toArray(new Long[removedChanges.size()])));
}

Loading…
Cancel
Save