From 3201ba37265edef7114be3b1e74bc4de30f8ef89 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Wed, 13 Feb 2013 14:57:13 -0800 Subject: [PATCH] Fixed a bug where sometimes tag_added outstanding entries wouldn't be added during migration --- .../astrid/actfm/sync/AstridNewSyncMigrator.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/AstridNewSyncMigrator.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/AstridNewSyncMigrator.java index 8b3ae4d54..663107fd3 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/AstridNewSyncMigrator.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/AstridNewSyncMigrator.java @@ -142,6 +142,9 @@ public class AstridNewSyncMigrator { public boolean shouldCreateOutstandingEntries(TagData instance) { return lastFetchTime == 0 || (instance.containsNonNullValue(TagData.MODIFICATION_DATE) && instance.getValue(TagData.MODIFICATION_DATE) > lastFetchTime); } + + @Override + public void afterSave(TagData instance, boolean createdOutstanding) {/**/} }); Query tasksQuery = Query.select(Task.ID, Task.UUID, Task.RECURRENCE, Task.FLAGS, Task.MODIFICATION_DATE, Task.LAST_SYNC).where(Criterion.all); @@ -182,6 +185,12 @@ public class AstridNewSyncMigrator { return result; } + + @Override + public void afterSave(Task instance, boolean createdOutstanding) { + if (createdOutstanding) + tasksThatNeedTagSync.add(instance.getId()); + } }); } catch (Exception e) { Log.e(LOG_TAG, "Error asserting UUIDs", e); @@ -381,6 +390,7 @@ public class AstridNewSyncMigrator { private interface UUIDAssertionExtras { void beforeSave(TYPE instance); boolean shouldCreateOutstandingEntries(TYPE instance); + void afterSave(TYPE instance, boolean createdOutstanding); } private > void assertUUIDsExist(Query query, TYPE instance, DatabaseDao dao, OutstandingEntryDao oeDao, OE oe, Property[] propertiesForOutstanding, UUIDAssertionExtras extras) { @@ -401,9 +411,13 @@ public class AstridNewSyncMigrator { instance.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true); dao.saveExisting(instance); + boolean createdOutstanding = false; if (propertiesForOutstanding != null && (unsyncedModel || (extras != null && extras.shouldCreateOutstandingEntries(instance)))) { + createdOutstanding = true; createOutstandingEntries(instance.getId(), dao, oeDao, oe, propertiesForOutstanding); } + if (extras != null) + extras.afterSave(instance, createdOutstanding); } } finally { cursor.close();