From 6e15d95a6efa7ba7142ff542e6dbb5a6ec53dbbf Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Fri, 20 Jan 2012 12:20:55 -0800 Subject: [PATCH] Adjusted C2DM receiver to only process when logged in, added helper class for SyncResultCallback --- .../com/timsu/astrid/C2DMReceiver.java | 38 ++++++++++--------- .../helper/ProgressBarSyncResultCallback.java | 3 +- .../helper/SyncResultCallbackAdapter.java | 35 +++++++++++++++++ 3 files changed, 57 insertions(+), 19 deletions(-) create mode 100644 astrid/src/com/todoroo/astrid/helper/SyncResultCallbackAdapter.java diff --git a/astrid/plugin-src/com/timsu/astrid/C2DMReceiver.java b/astrid/plugin-src/com/timsu/astrid/C2DMReceiver.java index c7deb8d5e..f25c4ca8c 100644 --- a/astrid/plugin-src/com/timsu/astrid/C2DMReceiver.java +++ b/astrid/plugin-src/com/timsu/astrid/C2DMReceiver.java @@ -25,8 +25,8 @@ import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.actfm.TagViewActivity; import com.todoroo.astrid.actfm.sync.ActFmPreferenceService; -import com.todoroo.astrid.actfm.sync.ActFmSyncProvider; import com.todoroo.astrid.actfm.sync.ActFmSyncService; +import com.todoroo.astrid.actfm.sync.ActFmSyncV2Provider; import com.todoroo.astrid.activity.ShortcutActivity; import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.api.AstridApiConstants; @@ -36,6 +36,7 @@ import com.todoroo.astrid.dao.UpdateDao; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Update; +import com.todoroo.astrid.helper.SyncResultCallbackAdapter; import com.todoroo.astrid.reminders.Notifications; import com.todoroo.astrid.service.AstridDependencyInjector; import com.todoroo.astrid.service.TagDataService; @@ -52,18 +53,25 @@ public class C2DMReceiver extends BroadcastReceiver { private static final String PREF_REGISTRATION = "c2dm_key"; private static final String PREF_LAST_C2DM = "c2dm_last"; - private static final long MIN_MILLIS_BETWEEN_FULL_SYNCS = 5 * DateUtilities.ONE_MINUTE; + private static final long MIN_MILLIS_BETWEEN_FULL_SYNCS = DateUtilities.ONE_HOUR; - @Autowired ActFmSyncService actFmSyncService; @Autowired TaskService taskService; @Autowired TagDataService tagDataService; @Autowired UpdateDao updateDao; @Autowired ActFmPreferenceService actFmPreferenceService; + @Autowired ActFmSyncService actFmSyncService; static { AstridDependencyInjector.initialize(); } + private final SyncResultCallbackAdapter refreshOnlyCallback = new SyncResultCallbackAdapter() { + @Override + public void finished() { + ContextManager.getContext().sendBroadcast(new Intent(AstridApiConstants.BROADCAST_EVENT_REFRESH)); + } + }; + @Override public void onReceive(Context context, final Intent intent) { ContextManager.setContext(context); @@ -74,13 +82,15 @@ public class C2DMReceiver extends BroadcastReceiver { new Thread(new Runnable() { @Override public void run() { - if(intent.hasExtra("web_update") && actFmPreferenceService.isLoggedIn()) - if (DateUtilities.now() - actFmPreferenceService.getLastSyncDate() > MIN_MILLIS_BETWEEN_FULL_SYNCS && !actFmPreferenceService.isOngoing()) - new ActFmSyncProvider().synchronize(ContextManager.getContext()); + if (actFmPreferenceService.isLoggedIn()) { + if(intent.hasExtra("web_update")) + if (DateUtilities.now() - actFmPreferenceService.getLastSyncDate() > MIN_MILLIS_BETWEEN_FULL_SYNCS && !actFmPreferenceService.isOngoing()) + new ActFmSyncV2Provider().synchronizeActiveTasks(false, refreshOnlyCallback); + else + handleWebUpdate(intent); else - handleWebUpdate(intent); - else - handleMessage(intent); + handleMessage(intent); + } } }).start(); } @@ -106,7 +116,7 @@ public class C2DMReceiver extends BroadcastReceiver { tagData.readFromCursor(cursor); } - actFmSyncService.fetchTag(tagData); + new ActFmSyncV2Provider().synchronizeList(tagData, false, refreshOnlyCallback); } finally { cursor.close(); } @@ -281,13 +291,7 @@ public class C2DMReceiver extends BroadcastReceiver { new Thread(new Runnable() { @Override public void run() { - try { - actFmSyncService.fetchTag(tagData); - } catch (IOException e) { - Log.e("c2dm-tag-rx", "io-exception", e); - } catch (JSONException e) { - Log.e("c2dm-tag-rx", "json-exception", e); - } + new ActFmSyncV2Provider().synchronizeList(tagData, false, refreshOnlyCallback); } }).start(); } else { diff --git a/astrid/src/com/todoroo/astrid/helper/ProgressBarSyncResultCallback.java b/astrid/src/com/todoroo/astrid/helper/ProgressBarSyncResultCallback.java index b530c8ba8..b4f426e48 100644 --- a/astrid/src/com/todoroo/astrid/helper/ProgressBarSyncResultCallback.java +++ b/astrid/src/com/todoroo/astrid/helper/ProgressBarSyncResultCallback.java @@ -8,9 +8,8 @@ import android.view.animation.AlphaAnimation; import android.widget.ProgressBar; import com.todoroo.andlib.utility.AndroidUtilities; -import com.todoroo.astrid.service.SyncV2Service.SyncResultCallback; -public class ProgressBarSyncResultCallback implements SyncResultCallback { +public class ProgressBarSyncResultCallback extends SyncResultCallbackAdapter { private ProgressBar progressBar; private final Activity activity; diff --git a/astrid/src/com/todoroo/astrid/helper/SyncResultCallbackAdapter.java b/astrid/src/com/todoroo/astrid/helper/SyncResultCallbackAdapter.java new file mode 100644 index 000000000..a7f1ff229 --- /dev/null +++ b/astrid/src/com/todoroo/astrid/helper/SyncResultCallbackAdapter.java @@ -0,0 +1,35 @@ +package com.todoroo.astrid.helper; + +import com.todoroo.astrid.service.SyncV2Service.SyncResultCallback; + + +/** + * Convenience class for implementing sync result callbacks--if we need a sync + * result callback that only implements a subset of the callback methods, it + * can extend this empty implementation + * @author Sam + * + */ +public abstract class SyncResultCallbackAdapter implements SyncResultCallback { + + @Override + public void incrementMax(int incrementBy) { + // Empty implementation + } + + @Override + public void incrementProgress(int incrementBy) { + // Empty implementation + } + + @Override + public void started() { + // Empty implementation + } + + @Override + public void finished() { + // Empty implementation + } + +}