From 3984cfb2c273488eb5b1c7faca1f24e828a9ba7b Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Wed, 24 Oct 2012 14:20:12 -0700 Subject: [PATCH] Fixed a bug when saving suggested users, which don't have email strings --- api/src/com/todoroo/astrid/data/User.java | 2 +- .../com/todoroo/astrid/actfm/sync/ActFmDataService.java | 8 +++++--- .../com/todoroo/astrid/actfm/sync/ActFmSyncService.java | 4 ++-- .../com/todoroo/astrid/people/PeopleFilterExposer.java | 1 + .../com/todoroo/astrid/people/PersonViewFragment.java | 6 +++++- 5 files changed, 14 insertions(+), 7 deletions(-) diff --git a/api/src/com/todoroo/astrid/data/User.java b/api/src/com/todoroo/astrid/data/User.java index 260f2cf34..fba07eca7 100644 --- a/api/src/com/todoroo/astrid/data/User.java +++ b/api/src/com/todoroo/astrid/data/User.java @@ -116,7 +116,7 @@ public final class User extends RemoteModel { public String getDisplayName() { String name = getValue(NAME); - if (!TextUtils.isEmpty(name)) + if (!(TextUtils.isEmpty(name) || "null".equals(name))) return name; return getValue(EMAIL); } diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmDataService.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmDataService.java index 9128bbfb9..98de05b6b 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmDataService.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmDataService.java @@ -10,6 +10,7 @@ import org.json.JSONObject; import android.content.ContentValues; import android.content.Context; +import android.text.TextUtils; import com.todoroo.andlib.data.Property; import com.todoroo.andlib.data.TodorooCursor; @@ -158,9 +159,10 @@ public final class ActFmDataService { */ @SuppressWarnings("nls") public void saveUserData(JSONObject userObject) throws JSONException { - TodorooCursor cursor = userDao.query(Query.select(User.PROPERTIES).where( - Criterion.or(User.REMOTE_ID.eq(userObject.get("id")), - Criterion.and(User.EMAIL.isNotNull(), User.EMAIL.eq(userObject.optString("email")))))); + Criterion criterion = User.REMOTE_ID.eq(userObject.getLong("id")); + if (!TextUtils.isEmpty(userObject.optString("email"))) + criterion = Criterion.or(criterion, Criterion.and(User.EMAIL.isNotNull(), User.EMAIL.eq(userObject.optString("email")))); + TodorooCursor cursor = userDao.query(Query.select(User.PROPERTIES).where(criterion)); try { cursor.moveToFirst(); User user = new User(); diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java index eb5d63b33..a9eff7681 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java @@ -874,8 +874,8 @@ public final class ActFmSyncService { for (int i = 0; i < users.length(); i++) { JSONObject userObject = users.getJSONObject(i); ids.add(userObject.optLong("id")); - actFmDataService.saveUserData(userObject); } - + actFmDataService.saveUserData(userObject); + } } public int fetchUsers() throws JSONException, IOException { diff --git a/astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterExposer.java index a58ca9321..98c3daf53 100644 --- a/astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterExposer.java @@ -59,6 +59,7 @@ public class PeopleFilterExposer extends BroadcastReceiver { private FilterListItem[] prepareFilters(Context context) { TodorooCursor users = PluginServices.getUserDao().query(Query.select(User.PROPERTIES) + .where(Criterion.all) .orderBy(Order.asc(User.NAME), Order.asc(User.EMAIL))); try { List items = new ArrayList(); diff --git a/astrid/plugin-src/com/todoroo/astrid/people/PersonViewFragment.java b/astrid/plugin-src/com/todoroo/astrid/people/PersonViewFragment.java index 0f42808bf..80f2c4821 100644 --- a/astrid/plugin-src/com/todoroo/astrid/people/PersonViewFragment.java +++ b/astrid/plugin-src/com/todoroo/astrid/people/PersonViewFragment.java @@ -106,8 +106,11 @@ public class PersonViewFragment extends TaskListFragment { private void setupUserStatusButton() { String status = user.getValue(User.STATUS); + String pendingStatus = user.getValue(User.PENDING_STATUS); userStatusButton.setVisibility(View.VISIBLE); - if (TextUtils.isEmpty(status)) + if (!TextUtils.isEmpty(pendingStatus)) + userStatusButton.setVisibility(View.GONE); + else if (TextUtils.isEmpty(status)) userStatusButton.setText(getString(R.string.actfm_friendship_connect)); else if (User.STATUS_OTHER_PENDING.equals(status)) userStatusButton.setText(getString(R.string.actfm_friendship_accept)); @@ -192,6 +195,7 @@ public class PersonViewFragment extends TaskListFragment { @Override public void run() { if (!TextUtils.isEmpty(user.getValue(User.PENDING_STATUS))) { + System.err.println("PUSHING USER"); actFmSyncService.pushUser(user); user = userDao.fetch(user.getId(), User.PROPERTIES); }