From 214e80905cc70bbc56a99d9fb3c9735112c4f3d0 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Wed, 20 Mar 2013 14:23:00 -0700 Subject: [PATCH] Just need to implement new list logic when list not authorized --- .../astrid/actfm/CommentsFragment.java | 4 +- .../todoroo/astrid/actfm/TagViewFragment.java | 56 ++++++++++++++++++- .../astrid/notes/EditNoteActivity.java | 4 +- .../astrid/people/PersonViewFragment.java | 4 +- astrid/res/values/strings-actfm.xml | 4 ++ .../astrid/activity/AstridActivity.java | 5 ++ .../astrid/activity/FilterListFragment.java | 8 --- 7 files changed, 65 insertions(+), 20 deletions(-) diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/CommentsFragment.java b/astrid/plugin-src/com/todoroo/astrid/actfm/CommentsFragment.java index e0f171548..ef774c2c3 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/CommentsFragment.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/CommentsFragment.java @@ -287,9 +287,7 @@ public abstract class CommentsFragment extends SherlockListFragment { } @Override - public void runOnErrors(List errors) { - // TODO: Implement this - } + public void runOnErrors(List errors) {/**/} }; if (hasModel()) { performFetch(manual, doneRunnable); diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java b/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java index 7c9b5390b..ca82254ee 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java @@ -16,6 +16,7 @@ import android.app.Activity; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; @@ -43,6 +44,7 @@ import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DateUtilities; +import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.actfm.sync.ActFmPreferenceService; import com.todoroo.astrid.actfm.sync.ActFmSyncService; @@ -59,6 +61,8 @@ import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterWithCustomIntent; import com.todoroo.astrid.core.SortHelper; +import com.todoroo.astrid.dao.MetadataDao; +import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.TagDataDao; import com.todoroo.astrid.dao.TagMetadataDao; import com.todoroo.astrid.dao.TagMetadataDao.TagMetadataCriteria; @@ -79,6 +83,7 @@ import com.todoroo.astrid.subtasks.SubtasksTagListFragment; import com.todoroo.astrid.tags.TagFilterExposer; import com.todoroo.astrid.tags.TagMemberMetadata; import com.todoroo.astrid.tags.TagService.Tag; +import com.todoroo.astrid.tags.TaskToTagMetadata; import com.todoroo.astrid.utility.AstridPreferences; import com.todoroo.astrid.utility.Flags; import com.todoroo.astrid.utility.ResourceDrawableCache; @@ -118,6 +123,8 @@ public class TagViewFragment extends TaskListFragment { @Autowired UserDao userDao; + @Autowired MetadataDao metadataDao; + @Autowired TagMetadataDao tagMetadataDao; protected View taskListView; @@ -361,7 +368,49 @@ public class TagViewFragment extends TaskListFragment { } @Override public void runOnErrors(List errors) { - // TODO: Implement this + Activity activity = getActivity(); + if (activity != null && activity instanceof TaskListActivity) { + boolean notAuthorized = false; + for (JSONObject error : errors) { + String errorCode = error.optString("code"); //$NON-NLS-1$ + if ("not_authorized".equals(errorCode)) { //$NON-NLS-1$ + notAuthorized = true; + break; + } + } + + final String tagName = tagData.getValue(TagData.NAME); + if (notAuthorized) { + final TaskListActivity tla = (TaskListActivity) activity; + tla.runOnUiThread(new Runnable() { + @Override + public void run() { + DialogUtilities.okCancelCustomDialog(tla, + tla.getString(R.string.actfm_tag_not_authorized_title), + tla.getString(R.string.actfm_tag_not_authorized_body), + R.string.actfm_tag_not_authorized_new_list, + R.string.actfm_tag_not_authorized_leave_list, + android.R.drawable.ic_dialog_alert, + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + // TODO: Implement + } + }, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + String uuid = tagData.getUuid(); + tagDataDao.delete(tagData.getId()); + metadataDao.deleteWhere(Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY), TagMetadata.TAG_UUID.eq(uuid))); + tagMetadataDao.deleteWhere(TagMetadata.TAG_UUID.eq(uuid)); + tla.switchToActiveTasks(); + } + }); + } + }); + } + + } } }; @@ -638,10 +687,11 @@ public class TagViewFragment extends TaskListFragment { parentOnResume(); // tag was deleted locally in settings // go back to active tasks - FilterListFragment fl = ((AstridActivity) getActivity()).getFilterListFragment(); + AstridActivity activity = ((AstridActivity) getActivity()); + FilterListFragment fl = activity.getFilterListFragment(); if (fl != null) { fl.clear(); // Should auto refresh - fl.switchToActiveTasks(); + activity.switchToActiveTasks(); } return; } diff --git a/astrid/plugin-src/com/todoroo/astrid/notes/EditNoteActivity.java b/astrid/plugin-src/com/todoroo/astrid/notes/EditNoteActivity.java index 50f7e1108..3bfd0b246 100644 --- a/astrid/plugin-src/com/todoroo/astrid/notes/EditNoteActivity.java +++ b/astrid/plugin-src/com/todoroo/astrid/notes/EditNoteActivity.java @@ -431,9 +431,7 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene } } @Override - public void runOnErrors(List errors) { - // TODO: Implement this - } + public void runOnErrors(List errors) {/**/} }; ActFmSyncThread.getInstance().enqueueMessage(new BriefMe(UserActivity.class, null, task.getValue(Task.USER_ACTIVITIES_PUSHED_AT), BriefMe.TASK_ID_KEY, task.getUuid()), callback); diff --git a/astrid/plugin-src/com/todoroo/astrid/people/PersonViewFragment.java b/astrid/plugin-src/com/todoroo/astrid/people/PersonViewFragment.java index 9c97deba7..4555289f7 100644 --- a/astrid/plugin-src/com/todoroo/astrid/people/PersonViewFragment.java +++ b/astrid/plugin-src/com/todoroo/astrid/people/PersonViewFragment.java @@ -222,9 +222,7 @@ public class PersonViewFragment extends TaskListFragment { } } @Override - public void runOnErrors(List errors) { - // TODO: Implement this - } + public void runOnErrors(List errors) {/**/} }; ActFmSyncThread.getInstance().enqueueMessage(new BriefMe(User.class, user.getValue(User.UUID), user.getValue(User.PUSHED_AT)), callback); } diff --git a/astrid/res/values/strings-actfm.xml b/astrid/res/values/strings-actfm.xml index 3998c2dfa..b1650b3e7 100644 --- a/astrid/res/values/strings-actfm.xml +++ b/astrid/res/values/strings-actfm.xml @@ -369,6 +369,10 @@ Clear all data Processing existing data... + Not authorized + You are no longer authorized to view this list (you may have been removed). Would you like to create a new list with the same name? + Create new list + Leave list diff --git a/astrid/src/com/todoroo/astrid/activity/AstridActivity.java b/astrid/src/com/todoroo/astrid/activity/AstridActivity.java index 0adb74eb3..f4197f89a 100644 --- a/astrid/src/com/todoroo/astrid/activity/AstridActivity.java +++ b/astrid/src/com/todoroo/astrid/activity/AstridActivity.java @@ -36,6 +36,7 @@ import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterListItem; import com.todoroo.astrid.api.FilterWithCustomIntent; import com.todoroo.astrid.api.IntentFilter; +import com.todoroo.astrid.core.CoreFilterExposer; import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.core.SearchFilter; import com.todoroo.astrid.dao.TaskDao; @@ -403,6 +404,10 @@ public class AstridActivity extends SherlockFragmentActivity DialogUtilities.okDialog(this, getString(errorStr), null); } + public void switchToActiveTasks() { + onFilterItemClicked(CoreFilterExposer.buildInboxFilter(getResources())); + } + @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_RESTART_ACTIVITY) { diff --git a/astrid/src/com/todoroo/astrid/activity/FilterListFragment.java b/astrid/src/com/todoroo/astrid/activity/FilterListFragment.java index 7a685f317..b01f04748 100644 --- a/astrid/src/com/todoroo/astrid/activity/FilterListFragment.java +++ b/astrid/src/com/todoroo/astrid/activity/FilterListFragment.java @@ -52,7 +52,6 @@ import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterListItem; import com.todoroo.astrid.api.FilterWithUpdate; -import com.todoroo.astrid.core.CoreFilterExposer; import com.todoroo.astrid.service.StatisticsService; import com.todoroo.astrid.tags.TagService; import com.todoroo.astrid.tags.TagsPlugin; @@ -284,13 +283,6 @@ public class FilterListFragment extends SherlockListFragment { mListener.onFilterItemClicked(item); } - public void switchToActiveTasks() { - if (adapter.getCount() > 0) - mListener.onFilterItemClicked(adapter.getItem(0)); - else - mListener.onFilterItemClicked(CoreFilterExposer.buildInboxFilter(getResources())); - } - @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {