From d5f192c891915fb7a302b2b0cdb134c62799d20c Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Thu, 6 Dec 2012 13:47:48 -0800 Subject: [PATCH] Sync filter orders with web --- .../astrid/actfm/sync/ActFmSyncService.java | 39 ++++++++++++++++--- .../actfm/sync/ActFmSyncV2Provider.java | 2 + .../astrid/subtasks/SubtasksHelper.java | 9 +++++ 3 files changed, 45 insertions(+), 5 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 0dfc94744..148cb14ee 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java @@ -76,6 +76,7 @@ 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; @@ -647,27 +648,31 @@ public final class ActFmSyncService { ArrayList params = new ArrayList(); - params.add("id"); params.add(remoteId); + params.add("tag_id"); params.add(remoteId); params.add("order"); params.add(SubtasksHelper.convertTreeToRemoteIds(tagData.getValue(TagData.TAG_ORDERING))); params.add("token"); params.add(token); try { - actFmInvoker.invoke("tag_save", params.toArray(new Object[params.size()])); + actFmInvoker.invoke("list_order", params.toArray(new Object[params.size()])); } catch (IOException e) { handleException("push-tag-order", e); } } - private void pushFilterOrdering(String filterId) { + private void pushFilterOrdering(String filterLocalId) { if (!checkForToken()) return; + String filterId = SubtasksHelper.serverFilterOrderId(filterLocalId); + if (filterId == null) + return; + // Make sure that all tasks are pushed before attempting to sync filter ordering waitUntilEmpty(); ArrayList params = new ArrayList(); - String order = Preferences.getStringValue(filterId); + String order = Preferences.getStringValue(filterLocalId); if (order == null || "null".equals(order)) order = "[]"; @@ -676,12 +681,36 @@ public final class ActFmSyncService { params.add("token"); params.add(token); try { - actFmInvoker.invoke("filter_order_save", params.toArray(new Object[params.size()])); + actFmInvoker.invoke("list_order", params.toArray(new Object[params.size()])); } catch (IOException e) { handleException("push-filter-order", e); } } + public void fetchFilterOrders() { + 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); + params.add("token"); params.add(token); + + try { + JSONObject result = actFmInvoker.invoke("list_order", params.toArray(new Object[params.size()])); + String order = result.optString("order"); + if (!TextUtils.isEmpty(order)) + Preferences.setString(localFilterId, order); + } catch (IOException e) { + handleException("fetch-filter-order", e); + } + } + public void fetchTagOrder(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 ae0748632..9c3737530 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncV2Provider.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncV2Provider.java @@ -320,6 +320,8 @@ public class ActFmSyncV2Provider extends SyncV2Provider { public void run() { pushQueuedTasks(callback, finisher); + actFmSyncService.fetchFilterOrders(); + callback.incrementProgress(30); if(finisher.decrementAndGet() == 0) { finishSync(callback); diff --git a/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksHelper.java b/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksHelper.java index 13d56b4df..dc7ac4d87 100644 --- a/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksHelper.java +++ b/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksHelper.java @@ -53,6 +53,15 @@ public class SubtasksHelper { return false; } + @SuppressWarnings("nls") + public static String serverFilterOrderId(String localFilterOrderId) { + if (SubtasksUpdater.ACTIVE_TASKS_ORDER.equals(localFilterOrderId)) + return "all"; + else if (SubtasksUpdater.TODAY_TASKS_ORDER.equals(localFilterOrderId)) + return "today"; + return null; + } + @SuppressWarnings("nls") public static String applySubtasksToWidgetFilter(Filter filter, String query, String tagName, int limit) { if (SubtasksHelper.shouldUseSubtasksFragmentForFilter(filter)) {