Add SyncThrottle

pull/189/head
Alex Baker 10 years ago
parent 886e22f791
commit 61ff44a6ed

@ -23,6 +23,7 @@ import com.todoroo.astrid.dao.TaskAttachmentDao;
import com.todoroo.astrid.data.StoreObject;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.SyncThrottle;
import com.todoroo.astrid.service.SyncV2Service;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.subtasks.OrderedListFragmentHelperInterface;
@ -49,6 +50,7 @@ public class GtasksListFragment extends SubtasksListFragment {
@Inject @ForActivity Context context;
@Inject TaskAttachmentDao taskAttachmentDao;
@Inject ActivityPreferences preferences;
@Inject SyncThrottle syncThrottle;
private StoreObject list;
@ -80,7 +82,7 @@ public class GtasksListFragment extends SubtasksListFragment {
if (!isCurrentTaskListFragment()) {
return;
}
if (list != null && DateUtilities.now() - list.getValue(GtasksList.LAST_SYNC) > DateUtilities.ONE_MINUTE * 10) {
if (list != null && syncThrottle.canSync(list.getId())) {
refreshData(false);
}
}

@ -0,0 +1,26 @@
package com.todoroo.astrid.service;
import org.joda.time.DateTime;
import java.util.HashMap;
import java.util.Map;
import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
public class SyncThrottle {
private final Map<Long, DateTime> lastSync = new HashMap<>();
@Inject
public SyncThrottle() {
}
public synchronized boolean canSync(long listId) {
DateTime now = new DateTime();
DateTime last = lastSync.get(listId);
lastSync.put(listId, now);
return last == null || last.isBefore(now.minusMinutes(10));
}
}
Loading…
Cancel
Save