Sync 1 minute after latest change

pull/820/head
Alex Baker 5 years ago
parent 1436035c94
commit 4fcf02365a

@ -174,7 +174,7 @@ public final class TaskListFragment extends InjectingFragment
public void onRefresh() {
disposables.add(
syncAdapters
.sync()
.sync(true)
.subscribe(
initiated -> {
if (!initiated) {
@ -561,7 +561,7 @@ public final class TaskListFragment extends InjectingFragment
for (Task task : tasks) {
onTaskCreated(task.getUuid());
}
syncAdapters.syncNow();
syncAdapters.sync();
}
void onTaskCreated(String uuid) {

@ -51,7 +51,7 @@ public class TaskDeleter {
public List<Task> markDeleted(List<Long> taskIds) {
deletionDao.markDeleted(taskIds);
workManager.cleanup(taskIds);
workManager.syncNow();
workManager.sync(false);
localBroadcastManager.broadcastRefresh();
return taskDao.fetch(taskIds);
}

@ -47,7 +47,7 @@ public class TaskMover {
task.setModificationDate(now());
taskDao.save(task);
}
syncAdapters.syncNow();
syncAdapters.sync();
}
public void move(Task task, Filter selectedList) {

@ -109,7 +109,7 @@ public class AfterSaveWork extends InjectingWorker {
if ((data.getBoolean(EXTRA_PUSH_GTASKS, false) && syncAdapters.isGoogleTaskSyncEnabled())
|| (data.getBoolean(EXTRA_PUSH_CALDAV, false) && syncAdapters.isCaldavSyncEnabled())) {
workManager.syncNow();
workManager.sync(false);
}
refreshScheduler.scheduleRefresh(task);

@ -94,20 +94,23 @@ public class WorkManager {
.build());
}
public void syncNow() {
public void sync(boolean immediate) {
Constraints constraints =
new Constraints.Builder()
.setRequiredNetworkType(
preferences.getBoolean(R.string.p_background_sync_unmetered_only, false)
!immediate && preferences.getBoolean(R.string.p_background_sync_unmetered_only, false)
? NetworkType.UNMETERED
: NetworkType.CONNECTED)
.build();
OneTimeWorkRequest request =
new OneTimeWorkRequest.Builder(SyncWork.class)
Builder builder =
new Builder(SyncWork.class)
.setBackoffCriteria(BackoffPolicy.EXPONENTIAL, 1, TimeUnit.MINUTES)
.setConstraints(constraints)
.build();
workManager.beginUniqueWork(TAG_SYNC, ExistingWorkPolicy.KEEP, request).enqueue();
.setConstraints(constraints);
if (!immediate) {
builder.setInitialDelay(1, TimeUnit.MINUTES);
}
OneTimeWorkRequest request = builder.build();
workManager.beginUniqueWork(TAG_SYNC, ExistingWorkPolicy.REPLACE, request).enqueue();
}
public void updateBackgroundSync() {

@ -22,17 +22,17 @@ public class SyncAdapters {
this.caldavDao = caldavDao;
}
public void syncNow() {
sync().subscribe();
public void sync() {
sync(false).subscribe();
}
public Single<Boolean> sync() {
public Single<Boolean> sync(boolean immediate) {
return Single.zip(
Single.fromCallable(this::isGoogleTaskSyncEnabled),
Single.fromCallable(this::isCaldavSyncEnabled),
(b1, b2) -> {
if (b1 || b2) {
workManager.syncNow();
workManager.sync(immediate);
return true;
}
return false;

Loading…
Cancel
Save