From baa05dfb46fb639e11bd29f9581369caadcf53b3 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Tue, 29 Jan 2013 15:44:00 -0800 Subject: [PATCH] Removed several references to TagData.MEMBERS in TagSettingsActivity. Still need to figure out how to detect member added/removed --- .../astrid/actfm/TagSettingsActivity.java | 91 ++++++++++--------- .../astrid/actfm/sync/ActFmSyncService.java | 2 +- .../todoroo/astrid/dao/TagMetadataDao.java | 6 ++ 3 files changed, 57 insertions(+), 42 deletions(-) diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java b/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java index efc14a7ca..d653ed26d 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/TagSettingsActivity.java @@ -9,6 +9,7 @@ import java.io.IOException; import org.json.JSONArray; import org.json.JSONException; +import org.json.JSONObject; import android.app.Activity; import android.content.Context; @@ -33,9 +34,11 @@ import android.widget.ImageView; import android.widget.TextView; 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.service.ExceptionService; +import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.Preferences; @@ -45,9 +48,13 @@ import com.todoroo.astrid.actfm.sync.ActFmSyncService; import com.todoroo.astrid.activity.FilterListFragment; import com.todoroo.astrid.activity.ShortcutActivity; import com.todoroo.astrid.api.Filter; +import com.todoroo.astrid.dao.TagMetadataDao; +import com.todoroo.astrid.dao.UserDao; import com.todoroo.astrid.data.RemoteModel; import com.todoroo.astrid.data.SyncFlags; import com.todoroo.astrid.data.TagData; +import com.todoroo.astrid.data.TagMetadata; +import com.todoroo.astrid.data.User; import com.todoroo.astrid.helper.AsyncImageView; import com.todoroo.astrid.helper.ImageDiskCache; import com.todoroo.astrid.service.StatisticsConstants; @@ -55,6 +62,7 @@ import com.todoroo.astrid.service.StatisticsService; import com.todoroo.astrid.service.TagDataService; import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.tags.TagFilterExposer; +import com.todoroo.astrid.tags.TagMemberMetadata; import com.todoroo.astrid.tags.TagService; import com.todoroo.astrid.ui.PeopleContainer; import com.todoroo.astrid.ui.PeopleContainer.ParseSharedException; @@ -89,6 +97,10 @@ public class TagSettingsActivity extends FragmentActivity { @Autowired ExceptionService exceptionService; + @Autowired UserDao userDao; + + @Autowired TagMetadataDao tagMetadataDao; + private PeopleContainer tagMembers; private AsyncImageView picture; private EditText tagName; @@ -135,7 +147,7 @@ public class TagSettingsActivity extends FragmentActivity { runOnUiThread(new Runnable() { @Override public void run() { - updateMembers(members); + updateMembers(members, RemoteModel.NO_UUID); } }); } @@ -235,7 +247,7 @@ public class TagSettingsActivity extends FragmentActivity { String autopopulateMembers = getIntent().getStringExtra(TOKEN_AUTOPOPULATE_MEMBERS); if (!TextUtils.isEmpty(autopopulateMembers)) { - updateMembers(autopopulateMembers); + updateMembers(autopopulateMembers, RemoteModel.NO_UUID); getIntent().removeExtra(TOKEN_AUTOPOPULATE_MEMBERS); } @@ -330,46 +342,15 @@ public class TagSettingsActivity extends FragmentActivity { if (members.length() > oldMemberCount) { StatisticsService.reportEvent(StatisticsConstants.ACTFM_LIST_SHARED); } - tagData.setValue(TagData.MEMBERS, members.toString()); tagData.setValue(TagData.MEMBER_COUNT, members.length()); tagData.setFlag(TagData.FLAGS, TagData.FLAG_SILENT, isSilent.isChecked()); InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(tagName.getWindowToken(), 0); - if (isNewTag) { - tagData.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); - tagDataService.save(tagData); - - final Runnable loadTag = new Runnable() { - @Override - public void run() { - setResult(RESULT_OK, new Intent().putExtra(TOKEN_NEW_FILTER, - TagFilterExposer.filterFromTagData(TagSettingsActivity.this, tagData))); - finish(); - } - }; - - if(actFmPreferenceService.isLoggedIn()) { - new Thread(new Runnable() { - @Override - public void run() { - actFmSyncService.pushTagDataOnSave(tagData, tagData.getMergedValues()); - if(setBitmap != null && !RemoteModel.NO_UUID.equals(tagData.getValue(TagData.UUID))) - uploadTagPicture(setBitmap); - - runOnUiThread(loadTag); - } - }).start(); - } else { - loadTag.run(); - } - - return; - } else { - setResult(RESULT_OK); - tagDataService.save(tagData); - } + setResult(RESULT_OK); + tagDataService.save(tagData); + tagMetadataDao.synchronizeMembers(tagData.getId(), tagData.getUuid(), members); refreshSettingsPage(); finish(); @@ -424,21 +405,49 @@ public class TagSettingsActivity extends FragmentActivity { } String peopleJson = tagData.getValue(TagData.MEMBERS); - updateMembers(peopleJson); + updateMembers(peopleJson, tagData.getUuid()); tagDescription.setText(tagData.getValue(TagData.TAG_DESCRIPTION)); } @SuppressWarnings("nls") - private void updateMembers(String peopleJson) { + private void updateMembers(String peopleJson, String tagUuid) { tagMembers.removeAllViews(); - if(!TextUtils.isEmpty(peopleJson)) { + JSONArray people = null; + try { + people = new JSONArray(peopleJson); + } catch (JSONException e) { + if (!RemoteModel.isUuidEmpty(tagUuid)) { + people = new JSONArray(); + TodorooCursor members = userDao.query(Query.select(User.PROPERTIES) + .where(User.UUID.in(Query.select(TagMemberMetadata.USER_UUID) + .from(TagMetadata.TABLE).where(TagMetadata.TAG_UUID.eq(tagUuid))))); + try { + User user = new User(); + for (members.moveToFirst(); !members.isAfterLast(); members.moveToNext()) { + user.clear(); + user.readFromCursor(members); + try { + JSONObject userJson = new JSONObject(); + ActFmSyncService.JsonHelper.jsonFromUser(userJson, user); + people.put(userJson); + } catch (JSONException e2) { + // + } + } + } finally { + members.close(); + } + } + + } + + if (people != null) { try { - JSONArray people = new JSONArray(peopleJson); tagMembers.fromJSONArray(people); } catch (JSONException e) { - Log.e("tag-view-activity", "json error refresh members - " + peopleJson, e); + Log.e("tag-settings", "Error parsing tag members: " + people, e); } } 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 c415ffe1d..5b06c0eb2 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/sync/ActFmSyncService.java @@ -1698,7 +1698,7 @@ public final class ActFmSyncService { json.put("id", model.getValue(User.UUID)); json.put("name", model.getDisplayName()); json.put("email", model.getValue(User.EMAIL)); - json.put("picture", model.getPictureUrl(User.PICTURE, RemoteModel.PICTURE_MEDIUM)); + json.put("picture", model.getPictureUrl(User.PICTURE, RemoteModel.PICTURE_THUMB)); } public static void updateFromJson(JSONObject json, Update model) throws JSONException { diff --git a/astrid/src/com/todoroo/astrid/dao/TagMetadataDao.java b/astrid/src/com/todoroo/astrid/dao/TagMetadataDao.java index 4a133398b..c9d521109 100644 --- a/astrid/src/com/todoroo/astrid/dao/TagMetadataDao.java +++ b/astrid/src/com/todoroo/astrid/dao/TagMetadataDao.java @@ -5,6 +5,8 @@ */ package com.todoroo.astrid.dao; +import org.json.JSONArray; + import android.content.ContentValues; import com.todoroo.andlib.data.AbstractModel; @@ -117,5 +119,9 @@ public class TagMetadataDao extends DatabaseDao { } } } + + public void synchronizeMembers(long tagId, String tagUuid, JSONArray members) { + throw new RuntimeException("IMPLEMENT ME!"); + } }