Improved subtasks sync

pull/14/head
Sam Bosley 13 years ago
parent 1a7a0b29a8
commit 4f28a9addc

@ -316,8 +316,8 @@ public class ActFmSyncV2Provider extends SyncV2Provider {
/** @return runnable to fetch changes to tags */ /** @return runnable to fetch changes to tags */
private void startTaskFetcher(final boolean manual, final SyncResultCallback callback, private void startTaskFetcher(final boolean manual, final SyncResultCallback callback,
final AtomicInteger finisher) { final AtomicInteger finisher) {
final boolean pushActiveTasksOrder = actFmSyncService.cancelFilterOrderingPush(SubtasksUpdater.ACTIVE_TASKS_ORDER); final boolean pushActiveTasksOrder = actFmSyncService.cancelFilterOrderingPush(SubtasksUpdater.ACTIVE_TASKS_ORDER) && manual;
final boolean pushTodayOrder = actFmSyncService.cancelFilterOrderingPush(SubtasksUpdater.TODAY_TASKS_ORDER); final boolean pushTodayOrder = actFmSyncService.cancelFilterOrderingPush(SubtasksUpdater.TODAY_TASKS_ORDER) && manual;
actFmSyncService.fetchActiveTasks(manual, handler, new Runnable() { actFmSyncService.fetchActiveTasks(manual, handler, new Runnable() {
@Override @Override
@ -465,8 +465,8 @@ public class ActFmSyncV2Provider extends SyncV2Provider {
fetchTagData(tagData, noRemoteId, manual, callback, finisher); fetchTagData(tagData, noRemoteId, manual, callback, finisher);
if(!noRemoteId) { if(!noRemoteId) {
boolean orderPushQueued = actFmSyncService.cancelTagOrderingPush(tagData.getId()) && manual;
actFmSyncService.waitUntilEmpty(); actFmSyncService.waitUntilEmpty();
boolean orderPushQueued = actFmSyncService.cancelTagOrderingPush(tagData.getId());
fetchTasksForTag(tagData, manual, orderPushQueued, callback, finisher); fetchTasksForTag(tagData, manual, orderPushQueued, callback, finisher);
fetchUpdatesForTag(tagData, manual, callback, finisher); fetchUpdatesForTag(tagData, manual, callback, finisher);
} }

@ -296,7 +296,7 @@ public class AstridOrderedListFragmentHelper<LIST> implements OrderedListFragmen
} }
if (madeChanges) { if (madeChanges) {
updater.writeSerialization(list, updater.serializeTree()); updater.writeSerialization(list, updater.serializeTree(), true);
} }
} finally { } finally {
recurring.close(); recurring.close();

@ -50,7 +50,7 @@ public abstract class AstridOrderedListUpdater<LIST> {
private final HashMap<Long, Node> idToNode; private final HashMap<Long, Node> idToNode;
protected abstract String getSerializedTree(LIST list, Filter filter); protected abstract String getSerializedTree(LIST list, Filter filter);
protected abstract void writeSerialization(LIST list, String serialized); protected abstract void writeSerialization(LIST list, String serialized, boolean shouldQueueSync);
protected abstract void applyToFilter(Filter filter); protected abstract void applyToFilter(Filter filter);
public int getIndentForTask(long targetTaskId) { public int getIndentForTask(long targetTaskId) {
@ -105,7 +105,7 @@ public abstract class AstridOrderedListUpdater<LIST> {
tasks.close(); tasks.close();
} }
if (changedThings) if (changedThings)
writeSerialization(list, serializeTree()); writeSerialization(list, serializeTree(), false);
} }
private void removeNodes(Set<Long> idsToRemove) { private void removeNodes(Set<Long> idsToRemove) {
@ -222,7 +222,7 @@ public abstract class AstridOrderedListUpdater<LIST> {
newSiblings.add(insertAfter + 1, node); newSiblings.add(insertAfter + 1, node);
} }
writeSerialization(list, serializeTree()); writeSerialization(list, serializeTree(), true);
applyToFilter(filter); applyToFilter(filter);
} }
@ -300,7 +300,7 @@ public abstract class AstridOrderedListUpdater<LIST> {
beforeIndex--; beforeIndex--;
} }
newSiblings.add(beforeIndex, moveThis); newSiblings.add(beforeIndex, moveThis);
writeSerialization(list, serializeTree()); writeSerialization(list, serializeTree(), true);
applyToFilter(filter); applyToFilter(filter);
} }
@ -321,7 +321,7 @@ public abstract class AstridOrderedListUpdater<LIST> {
treeRoot.children.add(moveThis); treeRoot.children.add(moveThis);
moveThis.parent = treeRoot; moveThis.parent = treeRoot;
setNodeIndent(moveThis, 0); setNodeIndent(moveThis, 0);
writeSerialization(list, serializeTree()); writeSerialization(list, serializeTree(), true);
applyToFilter(filter); applyToFilter(filter);
} }
@ -332,7 +332,7 @@ public abstract class AstridOrderedListUpdater<LIST> {
Node newNode = new Node(taskId, treeRoot, 0); Node newNode = new Node(taskId, treeRoot, 0);
treeRoot.children.add(newNode); treeRoot.children.add(newNode);
idToNode.put(taskId, newNode); idToNode.put(taskId, newNode);
writeSerialization(list, serializeTree()); writeSerialization(list, serializeTree(), true);
applyToFilter(filter); applyToFilter(filter);
} }
@ -355,7 +355,7 @@ public abstract class AstridOrderedListUpdater<LIST> {
} }
idToNode.remove(taskId); idToNode.remove(taskId);
writeSerialization(list, serializeTree()); writeSerialization(list, serializeTree(), true);
applyToFilter(filter); applyToFilter(filter);
} }

@ -15,9 +15,10 @@ public class SubtasksFilterUpdater extends SubtasksUpdater<String> {
} }
@Override @Override
protected void writeSerialization(String list, String serialized) { protected void writeSerialization(String list, String serialized, boolean shouldQueueSync) {
Preferences.setString(list, serialized); Preferences.setString(list, serialized);
actFmSyncService.pushFilterOrderingOnSave(list); if (shouldQueueSync)
actFmSyncService.pushFilterOrderingOnSave(list);
} }
} }

@ -15,10 +15,11 @@ public class SubtasksTagUpdater extends SubtasksUpdater<TagData> {
} }
@Override @Override
protected void writeSerialization(TagData list, String serialized) { protected void writeSerialization(TagData list, String serialized, boolean shouldQueueSync) {
list.setValue(TagData.TAG_ORDERING, serialized); list.setValue(TagData.TAG_ORDERING, serialized);
tagDataService.save(list); tagDataService.save(list);
actFmSyncService.pushTagOrderingOnSave(list.getId()); if (shouldQueueSync)
actFmSyncService.pushTagOrderingOnSave(list.getId());
} }
} }

Loading…
Cancel
Save