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 b000bc9f7..c9f8ee63b 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java @@ -76,7 +76,6 @@ import com.todoroo.astrid.service.TagDataService; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.abtesting.ABTestEventReportingService; import com.todoroo.astrid.subtasks.SubtasksHelper; -import com.todoroo.astrid.subtasks.SubtasksUpdater; import com.todoroo.astrid.sync.SyncV2Provider.SyncExceptionHandler; import com.todoroo.astrid.tags.TagService; import com.todoroo.astrid.tags.reusable.FeaturedListFilterExposer; @@ -635,6 +634,14 @@ public final class ActFmSyncService { return false; } + public boolean cancelFilterOrderingPush(String filterId) { + if (pushOrderQueue.contains(filterId)) { + pushOrderQueue.remove(filterId); + return true; + } + return false; + } + private void pushTagOrdering(TagData tagData) { if (!checkForToken()) return; @@ -687,15 +694,10 @@ public final class ActFmSyncService { } } - public void fetchFilterOrders() { + public void fetchFilterOrder(String localFilterId) { if (!checkForToken()) return; - fetchFilterOrder(SubtasksUpdater.ACTIVE_TASKS_ORDER); - fetchFilterOrder(SubtasksUpdater.TODAY_TASKS_ORDER); - } - - private void fetchFilterOrder(String localFilterId) { String filterId = SubtasksHelper.serverFilterOrderId(localFilterId); ArrayList params = new ArrayList(); params.add("filter"); params.add(filterId); 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 9c3737530..d1b3683fe 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncV2Provider.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncV2Provider.java @@ -39,6 +39,7 @@ import com.todoroo.astrid.service.AstridDependencyInjector; import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.TagDataService; import com.todoroo.astrid.service.TaskService; +import com.todoroo.astrid.subtasks.SubtasksUpdater; import com.todoroo.astrid.sync.SyncResultCallback; import com.todoroo.astrid.sync.SyncV2Provider; import com.todoroo.astrid.tags.TagService; @@ -315,12 +316,23 @@ public class ActFmSyncV2Provider extends SyncV2Provider { /** @return runnable to fetch changes to tags */ private void startTaskFetcher(final boolean manual, final SyncResultCallback callback, final AtomicInteger finisher) { + final boolean pushActiveTasksOrder = actFmSyncService.cancelFilterOrderingPush(SubtasksUpdater.ACTIVE_TASKS_ORDER); + final boolean pushTodayOrder = actFmSyncService.cancelFilterOrderingPush(SubtasksUpdater.TODAY_TASKS_ORDER); + actFmSyncService.fetchActiveTasks(manual, handler, new Runnable() { @Override public void run() { pushQueuedTasks(callback, finisher); - actFmSyncService.fetchFilterOrders(); + if (pushActiveTasksOrder) + actFmSyncService.pushFilterOrderingImmediately(SubtasksUpdater.ACTIVE_TASKS_ORDER); + else + actFmSyncService.fetchFilterOrder(SubtasksUpdater.ACTIVE_TASKS_ORDER); + + if (pushTodayOrder) + actFmSyncService.pushFilterOrderingImmediately(SubtasksUpdater.TODAY_TASKS_ORDER); + else + actFmSyncService.fetchFilterOrder(SubtasksUpdater.TODAY_TASKS_ORDER); callback.incrementProgress(30); if(finisher.decrementAndGet() == 0) {