From 5c39dc55d3968f65489da67908b779273b9fcae4 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Wed, 14 Nov 2012 13:26:56 -0800 Subject: [PATCH] When syncing a list, if its order exists in the ordering queue, push it immediately --- .../astrid/actfm/sync/ActFmSyncService.java | 19 +++++++++++++++---- .../actfm/sync/ActFmSyncV2Provider.java | 1 + 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java index 217ac6d01..70dad4072 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java @@ -272,10 +272,14 @@ public final class ActFmSyncService { } if (tagOrderQueue.size() > 0) { AndroidUtilities.sleepDeep(WAIT_BEFORE_PUSH_ORDER); - Long tagDataId = tagOrderQueue.remove(0); - TagData td = tagDataService.fetchById(tagDataId, TagData.ID, TagData.REMOTE_ID, TagData.TAG_ORDERING); - if (td != null) { - pushTagOrdering(td); + try { + Long tagDataId = tagOrderQueue.remove(0); + TagData td = tagDataService.fetchById(tagDataId, TagData.ID, TagData.REMOTE_ID, TagData.TAG_ORDERING); + if (td != null) { + pushTagOrdering(td); + } + } catch (IndexOutOfBoundsException e) { + // In case element was removed } } } @@ -593,6 +597,13 @@ public final class ActFmSyncService { } } + public void pushTagOrderingImmediately(TagData tagData) { + if (tagOrderQueue.contains(tagData.getId())) { + tagOrderQueue.remove(tagData.getId()); + pushTagOrdering(tagData); + } + } + private void pushTagOrdering(TagData tagData) { if (!checkForToken()) return; diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncV2Provider.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncV2Provider.java index b66ca6a77..c0f230539 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncV2Provider.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncV2Provider.java @@ -452,6 +452,7 @@ public class ActFmSyncV2Provider extends SyncV2Provider { if(!noRemoteId) { actFmSyncService.waitUntilEmpty(); + actFmSyncService.pushTagOrderingImmediately(tagData); fetchTasksForTag(tagData, manual, callback, finisher); fetchUpdatesForTag(tagData, manual, callback, finisher); }