diff --git a/clients/android/NewsBlur/src/com/newsblur/database/BlurDatabaseHelper.java b/clients/android/NewsBlur/src/com/newsblur/database/BlurDatabaseHelper.java index 39f22e8e3..b8b1becf7 100644 --- a/clients/android/NewsBlur/src/com/newsblur/database/BlurDatabaseHelper.java +++ b/clients/android/NewsBlur/src/com/newsblur/database/BlurDatabaseHelper.java @@ -522,14 +522,14 @@ public class BlurDatabaseHelper { } } - public void setFeedsActive(List feeds, boolean active) { + public void setFeedsActive(List feedIds, boolean active) { synchronized (RW_MUTEX) { dbRW.beginTransaction(); try { ContentValues values = new ContentValues(); values.put(DatabaseConstants.FEED_ACTIVE, active); - for (Feed feed : feeds) { - dbRW.update(DatabaseConstants.FEED_TABLE, values, DatabaseConstants.FEED_ID + " = ?", new String[]{feed.feedId}); + for (String feedId : feedIds) { + dbRW.update(DatabaseConstants.FEED_TABLE, values, DatabaseConstants.FEED_ID + " = ?", new String[]{feedId}); } dbRW.setTransactionSuccessful(); } finally { diff --git a/clients/android/NewsBlur/src/com/newsblur/database/FolderListAdapter.java b/clients/android/NewsBlur/src/com/newsblur/database/FolderListAdapter.java index 9ebc36534..eae093557 100644 --- a/clients/android/NewsBlur/src/com/newsblur/database/FolderListAdapter.java +++ b/clients/android/NewsBlur/src/com/newsblur/database/FolderListAdapter.java @@ -625,8 +625,10 @@ public class FolderListAdapter extends BaseExpandableListAdapter { return activeFolderChildren.get(convertGroupPositionToActiveFolderIndex(groupPosition)).get(childPosition); } - public List getFeeds(int groupPosition) { - return activeFolderChildren.get(convertGroupPositionToActiveFolderIndex(groupPosition)); + public List getAllFeedsForFolder(int groupPosition) { + String flatFolderName = activeFolderNames.get(convertGroupPositionToActiveFolderIndex(groupPosition)); + Folder folder = flatFolders.get(flatFolderName); + return folder.feedIds; } /** Get the cached SocialFeed object for the feed at the given list location. */ diff --git a/clients/android/NewsBlur/src/com/newsblur/fragment/FolderListFragment.java b/clients/android/NewsBlur/src/com/newsblur/fragment/FolderListFragment.java index f794b673f..ef6bec769 100644 --- a/clients/android/NewsBlur/src/com/newsblur/fragment/FolderListFragment.java +++ b/clients/android/NewsBlur/src/com/newsblur/fragment/FolderListFragment.java @@ -291,17 +291,17 @@ public class FolderListFragment extends NbFragment implements OnCreateContextMen DialogFragment chooseFoldersFragment = ChooseFoldersFragment.newInstance(adapter.getFeed(groupPosition, childPosition)); chooseFoldersFragment.show(getFragmentManager(), "dialog"); } else if (item.getItemId() == R.id.menu_mute_feed) { - List feeds = new ArrayList(); - feeds.add(adapter.getFeed(groupPosition, childPosition)); - FeedUtils.muteFeeds(getActivity(), feeds); + List feedIds = new ArrayList(); + feedIds.add(adapter.getFeed(groupPosition, childPosition).feedId); + FeedUtils.muteFeeds(getActivity(), feedIds); } else if (item.getItemId() == R.id.menu_unmute_feed) { - List feeds = new ArrayList(); - feeds.add(adapter.getFeed(groupPosition, childPosition)); - FeedUtils.unmuteFeeds(getActivity(), feeds); + List feedIds = new ArrayList(); + feedIds.add(adapter.getFeed(groupPosition, childPosition).feedId); + FeedUtils.unmuteFeeds(getActivity(), feedIds); } else if (item.getItemId() == R.id.menu_mute_folder) { - FeedUtils.muteFeeds(getActivity(), adapter.getFeeds(groupPosition)); + FeedUtils.muteFeeds(getActivity(), adapter.getAllFeedsForFolder(groupPosition)); } else if (item.getItemId() == R.id.menu_unmute_folder) { - FeedUtils.unmuteFeeds(getActivity(), adapter.getFeeds(groupPosition)); + FeedUtils.unmuteFeeds(getActivity(), adapter.getAllFeedsForFolder(groupPosition)); } return super.onContextItemSelected(item); diff --git a/clients/android/NewsBlur/src/com/newsblur/util/FeedUtils.java b/clients/android/NewsBlur/src/com/newsblur/util/FeedUtils.java index 88a349b82..08b64116a 100644 --- a/clients/android/NewsBlur/src/com/newsblur/util/FeedUtils.java +++ b/clients/android/NewsBlur/src/com/newsblur/util/FeedUtils.java @@ -288,35 +288,32 @@ public class FeedUtils { }.execute(); } - public static void muteFeeds(final Context context, final List feeds) { - updateFeedActiveState(context, feeds, false); + public static void muteFeeds(final Context context, final List feedIds) { + updateFeedActiveState(context, feedIds, false); } - public static void unmuteFeeds(final Context context, final List feeds) { - updateFeedActiveState(context, feeds, true); + public static void unmuteFeeds(final Context context, final List feedIds) { + updateFeedActiveState(context, feedIds, true); } - private static void updateFeedActiveState(final Context context, final List feeds, final boolean active) { + private static void updateFeedActiveState(final Context context, final List feedIds, final boolean active) { new AsyncTask() { @Override protected NewsBlurResponse doInBackground(Void... arg) { APIManager apiManager = new APIManager(context); Set activeFeeds = dbHelper.getAllActiveFeeds(); - for (Feed feed : feeds) { + for (String feedId : feedIds) { if (active) { - activeFeeds.add(feed.feedId); + activeFeeds.add(feedId); } else { - activeFeeds.remove(feed.feedId); + activeFeeds.remove(feedId); } } return apiManager.saveFeedChooser(activeFeeds); } @Override protected void onPostExecute(NewsBlurResponse result) { - for (Feed feed : feeds) { - feed.active = active; - } - dbHelper.setFeedsActive(feeds, active); + dbHelper.setFeedsActive(feedIds, active); NbActivity.updateAllActivities(NbActivity.UPDATE_METADATA); triggerSync(context); }