Reimplemented tag membership checking when assigning tasks

pull/14/head
Sam Bosley 13 years ago
parent d1ec539a15
commit 7f019c80dc

@ -5,6 +5,10 @@
*/
package com.todoroo.astrid.activity;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.animation.LayoutTransition;
import android.app.Activity;
import android.app.SearchManager;
@ -47,6 +51,7 @@ import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterListItem;
import com.todoroo.astrid.core.CustomFilterExposer;
import com.todoroo.astrid.dao.TagMetadataDao;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.people.PeopleFilterMode;
@ -94,6 +99,8 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
@Autowired private ABTestEventReportingService abTestEventReportingService;
@Autowired private TagMetadataDao tagMetadataDao;
private View listsNav;
private ImageView listsNavDisclosure;
private TextView lists;
@ -679,68 +686,65 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
}
}
private void checkAddTagMember(final TaskListFragment tlf, final String assignedDisplay, String assignedEmail, String assignedId) {
throw new RuntimeException("Hey Sam! You should reimplement this");
// final TagData td = tlf.getActiveTagData();
// if (td != null) {
// String members = td.getValue(TagData.MEMBERS);
// if (members == null)
// members = ""; //$NON-NLS-1$
// if (TextUtils.isEmpty(members) || TextUtils.isEmpty(assignedEmail) || !members.contains(assignedEmail)) {
// // show dialog to ask if user should be added to the tag-members
// JSONObject user = new JSONObject();
// JSONArray membersArray = null;
// boolean memberFound = false;
// try {
// if (!TextUtils.isEmpty(assignedEmail))
// user.put("email", assignedEmail); //$NON-NLS-1$
// if (assignedId > 0)
// user.put("id", assignedId); //$NON-NLS-1$
// membersArray = new JSONArray(members);
//
// for (int i = 0; i < membersArray.length(); i++) {
// JSONObject member = membersArray.getJSONObject(i);
// long memberId = member.optLong("id", Task.USER_ID_IGNORE); //$NON-NLS-1$
// if (memberId > 0 && memberId == assignedId) {
// memberFound = true;
// break;
// }
// }
// if (!memberFound) {
// String ownerString = td.getValue(TagData.USER);
// JSONObject owner = new JSONObject(ownerString);
// long ownerId = owner.optLong("id", Task.USER_ID_IGNORE); //$NON-NLS-1$
// if (ownerId > 0 && assignedId == ownerId)
// memberFound = true;
// }
// } catch (JSONException e) {
// return;
// }
//
// if (memberFound)
// return;
//
// membersArray.put(user);
//
// final JSONArray finalArray = membersArray;
// DialogInterface.OnClickListener okListener = new DialogInterface.OnClickListener() {
// @Override
// public void onClick(DialogInterface d, int which) {
// td.setValue(TagData.MEMBERS, finalArray.toString());
// td.setValue(TagData.MEMBER_COUNT, finalArray.length());
// PluginServices.getTagDataService().save(td);
// tlf.refresh();
// }
// };
// DialogUtilities.okCancelCustomDialog(this,
// getString(R.string.actfm_EPA_add_person_to_list_title),
// getString(R.string.actfm_EPA_add_person_to_list, assignedDisplay, assignedDisplay),
// R.string.actfm_EPA_add_person_to_list_ok,
// R.string.actfm_EPA_add_person_to_list_cancel,
// android.R.drawable.ic_dialog_alert,
// okListener, null);
// }
// }
private void checkAddTagMember(final TaskListFragment tlf, final String assignedDisplay, String assignedEmail, final String assignedId) {
final TagData td = tlf.getActiveTagData();
if (td != null) {
String members = td.getValue(TagData.MEMBERS);
boolean memberFound = false;
if (TextUtils.isEmpty(members))
memberFound = td.getValue(TagData.USER_ID).equals(assignedId) || tagMetadataDao.memberOfTagData(assignedEmail, assignedId);
else {
JSONObject user = new JSONObject();
JSONArray membersArray = null;
try {
if (!TextUtils.isEmpty(assignedEmail))
user.put("email", assignedEmail); //$NON-NLS-1$
if (Task.isRealUserId(assignedId))
user.put("id", assignedId); //$NON-NLS-1$
membersArray = new JSONArray(members);
for (int i = 0; i < membersArray.length(); i++) {
JSONObject member = membersArray.getJSONObject(i);
String memberId = Long.toString(member.optLong("id", -3)); //$NON-NLS-1$
if (Task.isRealUserId(memberId) && memberId.equals(assignedId)) {
memberFound = true;
break;
}
}
if (!memberFound) {
String ownerString = td.getValue(TagData.USER);
if (!TextUtils.isEmpty(ownerString)) {
JSONObject owner = new JSONObject(ownerString);
String ownerId = Long.toString(owner.optLong("id", -3)); //$NON-NLS-1$
if (Task.isRealUserId(ownerId) && assignedId.equals(ownerId))
memberFound = true;
}
}
} catch (JSONException e) {
return;
}
}
if (memberFound)
return;
DialogInterface.OnClickListener okListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface d, int which) {
tagMetadataDao.createMemberLink(td.getId(), td.getUuid(), assignedId, false);
tlf.refresh();
}
};
DialogUtilities.okCancelCustomDialog(this,
getString(R.string.actfm_EPA_add_person_to_list_title),
getString(R.string.actfm_EPA_add_person_to_list, assignedDisplay, assignedDisplay),
R.string.actfm_EPA_add_person_to_list_ok,
R.string.actfm_EPA_add_person_to_list_cancel,
android.R.drawable.ic_dialog_alert,
okListener, null);
}
}
public void incrementFilterCount(Filter filter) {

@ -187,5 +187,25 @@ public class TagMetadataDao extends DatabaseDao<TagMetadata> {
createMemberLink(tagId, tagUuid, id, false);
}
}
public boolean memberOfTagData(String email, String id) {
Criterion criterion;
if (!RemoteModel.isUuidEmpty(id) && !TextUtils.isEmpty(email))
criterion = Criterion.or(TagMemberMetadata.USER_UUID.eq(email), TagMemberMetadata.USER_UUID.eq(id));
else if (!RemoteModel.isUuidEmpty(id))
criterion = TagMemberMetadata.USER_UUID.eq(id);
else if (!TextUtils.isEmpty(email))
criterion = TagMemberMetadata.USER_UUID.eq(email);
else
return false;
TodorooCursor<TagMetadata> count = query(Query.select(TagMetadata.ID).where(
Criterion.and(TagMetadataCriteria.withKey(TagMemberMetadata.KEY), criterion)));
try {
return count.getCount() > 0;
} finally {
//
}
}
}

Loading…
Cancel
Save