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 {