diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java b/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java index 39b19a7fb..9c22e080a 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/EditPeopleControlSet.java @@ -389,10 +389,18 @@ public class EditPeopleControlSet implements TaskEditControlSet { boolean dirty = false; try { JSONObject userJson = null; - if(assignedCustom.getVisibility() == View.VISIBLE) + TextView assignedView = null; + if(assignedCustom.getVisibility() == View.VISIBLE) { userJson = PeopleContainer.createUserJson(assignedCustom); - else if(assignedSpinner.getSelectedItem() != null) + assignedView = assignedCustom; + } else if(assignedSpinner.getSelectedItem() != null) { userJson = ((AssignedToUser) assignedSpinner.getSelectedItem()).user; + } + + if (userJson != null && userJson.optString("email").indexOf('@') == -1) { + throw new ParseSharedException(assignedView, + activity.getString(R.string.actfm_EPA_invalid_email, userJson.optString("email"))); + } if(userJson == null || userJson.optLong("id", -1) == 0) { dirty = task.getValue(Task.USER_ID) == 0L ? dirty : true; @@ -446,8 +454,10 @@ public class EditPeopleControlSet implements TaskEditControlSet { } catch (JSONException e) { exceptionService.displayAndReportError(activity, "save-people", e); } catch (ParseSharedException e) { - e.view.setTextColor(Color.RED); - e.view.requestFocus(); + if(e.view != null) { + e.view.setTextColor(Color.RED); + e.view.requestFocus(); + } DialogUtilities.okDialog(activity, e.message, null); } return false; @@ -613,7 +623,11 @@ public class EditPeopleControlSet implements TaskEditControlSet { values.add(task.getValue(Task.USER_ID)); else { JSONObject user = new JSONObject(task.getValue(Task.USER)); - values.add(user.getString("email")); + String userEmail = user.getString("email"); + if (userEmail.indexOf('@') == -1) + values.add(""); + else + values.add(user.getString("email")); } } diff --git a/astrid/src/com/todoroo/astrid/ui/PeopleContainer.java b/astrid/src/com/todoroo/astrid/ui/PeopleContainer.java index 7a150e2d7..15c28cc84 100644 --- a/astrid/src/com/todoroo/astrid/ui/PeopleContainer.java +++ b/astrid/src/com/todoroo/astrid/ui/PeopleContainer.java @@ -191,6 +191,11 @@ public class PeopleContainer extends LinearLayout { } } + /** + * Warning: user json may not have a valid email address. + * @param textView + * @return + */ @SuppressWarnings("nls") public static JSONObject createUserJson(TextView textView) { if(textView.isEnabled() == false)