diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/NameMaps.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/NameMaps.java index e56ca60b3..2398a51a9 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/NameMaps.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/messages/NameMaps.java @@ -183,6 +183,10 @@ public class NameMaps { } + // ---------- + // Mapping helpers + // ---------- + private static B mapColumnName(String table, String col, Map taskMap, Map tagMap, Map userMap) { Map map = null; if (TABLE_ID_TASKS.equals(table)) diff --git a/astrid/plugin-src/com/todoroo/astrid/gcal/CalendarAlarmListCreator.java b/astrid/plugin-src/com/todoroo/astrid/gcal/CalendarAlarmListCreator.java index 563c52906..6d03ef9d3 100644 --- a/astrid/plugin-src/com/todoroo/astrid/gcal/CalendarAlarmListCreator.java +++ b/astrid/plugin-src/com/todoroo/astrid/gcal/CalendarAlarmListCreator.java @@ -25,6 +25,7 @@ import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.astrid.actfm.sync.ActFmPreferenceService; import com.todoroo.astrid.activity.EditPreferences; import com.todoroo.astrid.activity.TaskListActivity; +import com.todoroo.astrid.dao.TagMetadataDao; import com.todoroo.astrid.dao.UserDao; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.User; @@ -44,6 +45,9 @@ public class CalendarAlarmListCreator extends Activity { @Autowired private ActFmPreferenceService actFmPreferenceService; + @Autowired + private TagMetadataDao tagMetadataDao; + private ArrayList names; private ArrayList emails; private HashMap emailsToUsers; @@ -156,12 +160,13 @@ public class CalendarAlarmListCreator extends Activity { moreOptions.performClick(); return; } else { - JSONArray membersArray = buildMembersArray(); TagData tagData = new TagData(); tagData.setValue(TagData.NAME, tagName); - tagData.setValue(TagData.MEMBERS, membersArray.toString()); - tagData.setValue(TagData.MEMBER_COUNT, membersArray.length()); + tagData.setValue(TagData.MEMBER_COUNT, emails.size()); tagDataService.save(tagData); + for (String email : emails) { + tagMetadataDao.createMemberLink(tagData.getId(), tagData.getUuid(), email, false); + } dismissWithAnimation(); } } diff --git a/astrid/plugin-src/com/todoroo/astrid/reminders/ReminderDialog.java b/astrid/plugin-src/com/todoroo/astrid/reminders/ReminderDialog.java index 302b4b654..15ab6e157 100644 --- a/astrid/plugin-src/com/todoroo/astrid/reminders/ReminderDialog.java +++ b/astrid/plugin-src/com/todoroo/astrid/reminders/ReminderDialog.java @@ -30,18 +30,25 @@ import com.timsu.astrid.R; import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.DependencyInjectionService; +import com.todoroo.andlib.sql.Criterion; +import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.actfm.sync.ActFmPreferenceService; +import com.todoroo.astrid.actfm.sync.ActFmSyncService; import com.todoroo.astrid.activity.AstridActivity; import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.core.PluginServices; +import com.todoroo.astrid.dao.UserDao; import com.todoroo.astrid.data.TagData; +import com.todoroo.astrid.data.TagMetadata; import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.data.User; import com.todoroo.astrid.helper.AsyncImageView; import com.todoroo.astrid.service.StatisticsConstants; import com.todoroo.astrid.service.StatisticsService; import com.todoroo.astrid.service.TaskService; +import com.todoroo.astrid.tags.TagMemberMetadata; import com.todoroo.astrid.tags.TagService; /** @@ -60,6 +67,9 @@ public class ReminderDialog extends Dialog { @Autowired private TagService tagService; + @Autowired + private UserDao userDao; + public ReminderDialog(final AstridActivity activity, final long taskId, String title) { super(activity, R.style.ReminderDialog); @@ -221,7 +231,7 @@ public class ReminderDialog extends Dialog { } private void addTagFaces(long taskId, LinkedHashSet pictureUrls, AtomicBoolean isSharedTask) { - TodorooCursor tags = tagService.getTagDataForTask(taskId, TagData.MEMBER_COUNT.gt(0), TagData.MEMBERS); + TodorooCursor tags = tagService.getTagDataForTask(taskId, Criterion.all, TagData.UUID, TagData.MEMBERS); try { TagData td = new TagData(); for (tags.moveToFirst(); !tags.isAfterLast() && pictureUrls.size() < MAX_FACES; tags.moveToNext()) { @@ -230,7 +240,33 @@ public class ReminderDialog extends Dialog { JSONArray people = new JSONArray(td.getValue(TagData.MEMBERS)); addPicturesFromJSONArray(people, pictureUrls, isSharedTask); } catch (JSONException e) { - // + JSONArray people = new JSONArray(); + TodorooCursor users = userDao.query(Query.select(User.PROPERTIES) + .where(User.UUID.in( + Query.select(TagMemberMetadata.USER_UUID) + .from(TagMetadata.TABLE) + .where(TagMetadata.TAG_UUID.eq(td.getUuid()))))); + try { + User user = new User(); + for (users.moveToFirst(); !users.isAfterLast(); users.moveToNext()) { + user.clear(); + user.readFromCursor(users); + try { + JSONObject userJson = new JSONObject(); + ActFmSyncService.JsonHelper.jsonFromUser(userJson, user); + people.put(userJson); + } catch (JSONException e2) { + // + } + } + try { + addPicturesFromJSONArray(people, pictureUrls, isSharedTask); + } catch (JSONException e2) { + // + } + } finally { + users.close(); + } } } } finally {