diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java b/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java index 4f3889416..35bddb8cc 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java @@ -56,6 +56,7 @@ import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterWithCustomIntent; import com.todoroo.astrid.core.SortHelper; import com.todoroo.astrid.dao.TagMetadataDao; +import com.todoroo.astrid.dao.TagMetadataDao.TagMetadataCriteria; import com.todoroo.astrid.dao.TaskDao.TaskCriteria; import com.todoroo.astrid.dao.UserDao; import com.todoroo.astrid.data.RemoteModel; @@ -376,13 +377,9 @@ public class TagViewFragment extends TaskListFragment { TodorooCursor users = userDao.query(Query.select(User.PROPERTIES) .where(User.UUID.in(Query.select(TagMemberMetadata.USER_UUID) .from(TagMetadata.TABLE) - .where(Criterion.and(TagMetadata.TAG_UUID.eq(tagData.getUuid()), TagMetadata.DELETION_DATE.eq(0)))))); + .where(Criterion.and(TagMetadataCriteria.byTagAndWithKey(tagData.getUuid(), TagMemberMetadata.KEY), TagMetadata.DELETION_DATE.eq(0)))))); try { addedMembers = users.getCount() > 0; - if (addedMembers) { - membersView.setOnClickListener(null); - membersView.removeAllViews(); - } User user = new User(); for (users.moveToFirst(); !users.isAfterLast(); users.moveToNext()) { user.clear(); @@ -396,9 +393,10 @@ public class TagViewFragment extends TaskListFragment { } TodorooCursor byEmail = tagMetadataDao.query(Query.select(TagMemberMetadata.USER_UUID) - .where(Criterion.and(TagMetadata.TAG_UUID.eq(tagData.getUuid()), - TagMemberMetadata.USER_UUID.like("%@%")))); //$NON-NLS-1$ + .where(Criterion.and(TagMetadataCriteria.byTagAndWithKey(tagData.getUuid(), TagMemberMetadata.KEY), + TagMemberMetadata.USER_UUID.like("%@%"), TagMetadata.DELETION_DATE.eq(0)))); //$NON-NLS-1$ try { + addedMembers = addedMembers || byEmail.getCount() > 0; TagMetadata tm = new TagMetadata(); for (byEmail.moveToFirst(); !byEmail.isAfterLast(); byEmail.moveToNext()) { tm.clear(); @@ -413,6 +411,11 @@ public class TagViewFragment extends TaskListFragment { } finally { byEmail.close(); } + + if (addedMembers) { + membersView.setOnClickListener(null); + membersView.removeAllViews(); + } } } catch (JSONException e) { e.printStackTrace(); diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/TagMemberMetadata.java b/astrid/plugin-src/com/todoroo/astrid/tags/TagMemberMetadata.java index 5c8b638b8..80c138617 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/TagMemberMetadata.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/TagMemberMetadata.java @@ -12,6 +12,7 @@ public class TagMemberMetadata { public static TagMetadata newMemberMetadata(long tagId, String tagUuid, String userUuid) { TagMetadata m = new TagMetadata(); + m.setValue(TagMetadata.KEY, KEY); m.setValue(TagMetadata.TAG_ID, tagId); m.setValue(TagMetadata.TAG_UUID, tagUuid); m.setValue(USER_UUID, userUuid); diff --git a/astrid/src/com/todoroo/astrid/dao/TagMetadataDao.java b/astrid/src/com/todoroo/astrid/dao/TagMetadataDao.java index 9500db94b..685da2810 100644 --- a/astrid/src/com/todoroo/astrid/dao/TagMetadataDao.java +++ b/astrid/src/com/todoroo/astrid/dao/TagMetadataDao.java @@ -113,19 +113,19 @@ public class TagMetadataDao extends DatabaseDao { public void removeMemberLink(long tagId, String tagUuid, String memberId, boolean suppressOutstanding) { TagMetadata deleteTemplate = new TagMetadata(); deleteTemplate.setValue(TagMetadata.TAG_ID, tagId); // Need this for recording changes in outstanding table - deleteTemplate.setValue(Metadata.DELETION_DATE, DateUtilities.now()); + deleteTemplate.setValue(TagMetadata.DELETION_DATE, DateUtilities.now()); deleteTemplate.setValue(TagMemberMetadata.USER_UUID, memberId); // Need this for recording changes in outstanding table if (suppressOutstanding) deleteTemplate.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true); - update(Criterion.and(TagMetadataCriteria.withKey(TagMemberMetadata.KEY), Metadata.DELETION_DATE.eq(0), + update(Criterion.and(TagMetadataCriteria.withKey(TagMemberMetadata.KEY), TagMetadata.DELETION_DATE.eq(0), TagMetadata.TAG_UUID.eq(tagUuid), TagMemberMetadata.USER_UUID.eq(memberId)), deleteTemplate); } public void removeMemberLinks(long tagId, String tagUuid, String[] memberIds, boolean suppressOutstanding) { TagMetadata deleteTemplate = new TagMetadata(); deleteTemplate.setValue(TagMetadata.TAG_ID, tagId); // Need this for recording changes in outstanding table - deleteTemplate.setValue(Metadata.DELETION_DATE, DateUtilities.now()); + deleteTemplate.setValue(TagMetadata.DELETION_DATE, DateUtilities.now()); if (memberIds != null) { for (String uuid : memberIds) { // TODO: Right now this is in a loop because each deleteTemplate needs the individual tagUuid in order to record @@ -133,7 +133,7 @@ public class TagMetadataDao extends DatabaseDao { deleteTemplate.setValue(TagMemberMetadata.USER_UUID, uuid); // Need this for recording changes in outstanding table if (suppressOutstanding) deleteTemplate.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true); - update(Criterion.and(TagMetadataCriteria.withKey(TagMemberMetadata.KEY), Metadata.DELETION_DATE.eq(0), + update(Criterion.and(TagMetadataCriteria.withKey(TagMemberMetadata.KEY), TagMetadata.DELETION_DATE.eq(0), TagMetadata.TAG_UUID.eq(tagUuid), TagMemberMetadata.USER_UUID.eq(uuid)), deleteTemplate); } }