diff --git a/api/src/com/todoroo/andlib/data/DatabaseDao.java b/api/src/com/todoroo/andlib/data/DatabaseDao.java index 43fe0cdb0..182108a3c 100644 --- a/api/src/com/todoroo/andlib/data/DatabaseDao.java +++ b/api/src/com/todoroo/andlib/data/DatabaseDao.java @@ -86,7 +86,7 @@ public class DatabaseDao { // --- listeners public interface ModelUpdateListener { - public void onModelUpdated(MTYPE model); + public void onModelUpdated(MTYPE model, boolean outstandingEntries); } private final ArrayList> listeners = @@ -96,10 +96,10 @@ public class DatabaseDao { listeners.add(listener); } - protected void onModelUpdated(TYPE model) { + protected void onModelUpdated(TYPE model, boolean outstandingEntries) { TYPE modelCopy = (TYPE) model.clone(); for(ModelUpdateListener listener : listeners) { - listener.onModelUpdated(modelCopy); + listener.onModelUpdated(modelCopy, outstandingEntries); } } @@ -271,7 +271,7 @@ public class DatabaseDao { database.getDatabase().endTransaction(); } if (result.get()) { - onModelUpdated(item); + onModelUpdated(item, recordOutstanding); item.markSaved(); } return result.get(); 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 4b7d5bb28..65b864e4d 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java @@ -147,7 +147,7 @@ public final class ActFmSyncService { taskDao.addListener(new ModelUpdateListener() { @Override - public void onModelUpdated(final Task model) { + public void onModelUpdated(final Task model, boolean outstandingEntries) { if(model.checkAndClearTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC)) return; if (actFmPreferenceService.isOngoing() && model.getTransitory(TaskService.TRANS_EDIT_SAVE) == null) @@ -184,7 +184,7 @@ public final class ActFmSyncService { updateDao.addListener(new ModelUpdateListener() { @Override - public void onModelUpdated(final Update model) { + public void onModelUpdated(final Update model, boolean outstandingEntries) { if(model.checkAndClearTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC)) return; if (actFmPreferenceService.isOngoing()) @@ -204,7 +204,7 @@ public final class ActFmSyncService { tagDataDao.addListener(new ModelUpdateListener() { @Override - public void onModelUpdated(final TagData model) { + public void onModelUpdated(final TagData model, boolean outstandingEntries) { if(model.checkAndClearTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC)) return; if (actFmPreferenceService.isOngoing()) diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/SyncDatabaseListener.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/SyncDatabaseListener.java index 701d00bc0..169535752 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/SyncDatabaseListener.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/SyncDatabaseListener.java @@ -21,12 +21,14 @@ public class SyncDatabaseListener implements ModelU } @Override - public void onModelUpdated(MTYPE model) { - ChangesHappened ch = ChangesHappened.instantiateChangesHappened(model.getId(), modelType); - if (!queue.contains(ch)) { - queue.add(ch); - synchronized(monitor) { - monitor.notifyAll(); + public void onModelUpdated(MTYPE model, boolean outstandingEntries) { + if (outstandingEntries) { + ChangesHappened ch = ChangesHappened.instantiateChangesHappened(model.getId(), modelType); + if (!queue.contains(ch)) { + queue.add(ch); + synchronized(monitor) { + monitor.notifyAll(); + } } } } diff --git a/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java b/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java index 7da4754eb..720d6d933 100644 --- a/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java +++ b/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java @@ -101,7 +101,7 @@ public final class GtasksSyncService { new OperationPushThread(operationQueue).start(); taskDao.addListener(new ModelUpdateListener() { - public void onModelUpdated(final Task model) { + public void onModelUpdated(final Task model, boolean outstandingEntries) { if(model.checkAndClearTransitory(SyncFlags.GTASKS_SUPPRESS_SYNC)) return; if (gtasksPreferenceService.isOngoing() && !model.checkTransitory(TaskService.TRANS_REPEAT_COMPLETE)) //Don't try and sync changes that occur during a normal sync diff --git a/astrid/src/com/todoroo/astrid/service/StartupService.java b/astrid/src/com/todoroo/astrid/service/StartupService.java index 1f0435bb1..2ea5808c1 100644 --- a/astrid/src/com/todoroo/astrid/service/StartupService.java +++ b/astrid/src/com/todoroo/astrid/service/StartupService.java @@ -269,7 +269,7 @@ public class StartupService { // the corresponding metadata will also update tagDataDao.addListener(new ModelUpdateListener() { @Override - public void onModelUpdated(TagData model) { + public void onModelUpdated(TagData model, boolean outstandingEntries) { ContentValues values = model.getSetValues(); Metadata m = new Metadata(); if (values != null) {