Muting folder should include all feeds in folder.

This commit is contained in:
Mark Anderson 2016-10-26 22:54:08 +01:00
parent 190ea94dbb
commit 887bc05661
4 changed files with 24 additions and 25 deletions

View file

@ -522,14 +522,14 @@ public class BlurDatabaseHelper {
}
}
public void setFeedsActive(List<Feed> feeds, boolean active) {
public void setFeedsActive(List<String> 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 {

View file

@ -625,8 +625,10 @@ public class FolderListAdapter extends BaseExpandableListAdapter {
return activeFolderChildren.get(convertGroupPositionToActiveFolderIndex(groupPosition)).get(childPosition);
}
public List<Feed> getFeeds(int groupPosition) {
return activeFolderChildren.get(convertGroupPositionToActiveFolderIndex(groupPosition));
public List<String> 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. */

View file

@ -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<Feed> feeds = new ArrayList<Feed>();
feeds.add(adapter.getFeed(groupPosition, childPosition));
FeedUtils.muteFeeds(getActivity(), feeds);
List<String> feedIds = new ArrayList<String>();
feedIds.add(adapter.getFeed(groupPosition, childPosition).feedId);
FeedUtils.muteFeeds(getActivity(), feedIds);
} else if (item.getItemId() == R.id.menu_unmute_feed) {
List<Feed> feeds = new ArrayList<Feed>();
feeds.add(adapter.getFeed(groupPosition, childPosition));
FeedUtils.unmuteFeeds(getActivity(), feeds);
List<String> feedIds = new ArrayList<String>();
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);

View file

@ -288,35 +288,32 @@ public class FeedUtils {
}.execute();
}
public static void muteFeeds(final Context context, final List<Feed> feeds) {
updateFeedActiveState(context, feeds, false);
public static void muteFeeds(final Context context, final List<String> feedIds) {
updateFeedActiveState(context, feedIds, false);
}
public static void unmuteFeeds(final Context context, final List<Feed> feeds) {
updateFeedActiveState(context, feeds, true);
public static void unmuteFeeds(final Context context, final List<String> feedIds) {
updateFeedActiveState(context, feedIds, true);
}
private static void updateFeedActiveState(final Context context, final List<Feed> feeds, final boolean active) {
private static void updateFeedActiveState(final Context context, final List<String> feedIds, final boolean active) {
new AsyncTask<Void, Void, NewsBlurResponse>() {
@Override
protected NewsBlurResponse doInBackground(Void... arg) {
APIManager apiManager = new APIManager(context);
Set<String> 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);
}