Adjusted C2DM receiver to only process when logged in, added helper class for SyncResultCallback

pull/14/head
Sam Bosley 13 years ago
parent f5c5cfa354
commit 6e15d95a6e

@ -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 {

@ -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;

@ -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
}
}
Loading…
Cancel
Save