From e5269074ca66d20d97285df8a01327cb4d4cab41 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Fri, 15 Mar 2013 17:01:29 -0700 Subject: [PATCH] Some enhancements to make sure we don't remove and readd tag members --- .../src/com/todoroo/astrid/dao/TagMetadataDao.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/astrid/src/com/todoroo/astrid/dao/TagMetadataDao.java b/astrid/src/com/todoroo/astrid/dao/TagMetadataDao.java index 69779ac98..b12efd629 100644 --- a/astrid/src/com/todoroo/astrid/dao/TagMetadataDao.java +++ b/astrid/src/com/todoroo/astrid/dao/TagMetadataDao.java @@ -5,6 +5,7 @@ */ package com.todoroo.astrid.dao; +import java.util.HashMap; import java.util.HashSet; import java.util.Set; @@ -158,6 +159,8 @@ public class TagMetadataDao extends DatabaseDao { Set emails = new HashSet(); Set ids = new HashSet(); + HashMap idToEmail = new HashMap(); + for (int i = 0; i < members.length(); i++) { JSONObject person = members.optJSONObject(i); if (person != null) { @@ -168,6 +171,10 @@ public class TagMetadataDao extends DatabaseDao { String email = person.optString("email"); //$NON-NLS-1$ if (!TextUtils.isEmpty(email)) emails.add(email); + + if (!TextUtils.isEmpty(id) && !TextUtils.isEmpty(email)) { + idToEmail.put(id, email); + } } } @@ -204,6 +211,11 @@ public class TagMetadataDao extends DatabaseDao { String userId = m.getValue(TagMemberMetadata.USER_UUID); boolean exists = ids.remove(userId) || emails.remove(userId); + if (exists && idToEmail.containsKey(userId)) { + String email = idToEmail.get(userId); + emails.remove(email); + } + if (!exists) { // Was in database, but not in new members list removeMemberLink(tagId, tagUuid, userId, false); }