diff options
Diffstat (limited to 'org.fox.ttrss')
| -rwxr-xr-x | org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java | 16 | ||||
| -rwxr-xr-x | org.fox.ttrss/src/main/java/org/fox/ttrss/RootCategoriesFragment.java | 27 |
2 files changed, 24 insertions, 19 deletions
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java index 5ff66eff..a0ab4f33 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java @@ -49,6 +49,7 @@ import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; import java.util.stream.IntStream; public class FeedsFragment extends Fragment implements OnSharedPreferenceChangeListener, @@ -71,9 +72,12 @@ public class FeedsFragment extends Fragment implements OnSharedPreferenceChangeL m_enableParentBtn = enableParentBtn; } + @NonNull @Override public Loader<JsonElement> onCreateLoader(int id, Bundle args) { - if (m_swipeLayout != null) m_swipeLayout.setRefreshing(true); + + if (m_swipeLayout != null) + m_swipeLayout.setRefreshing(true); HashMap<String,String> params = new HashMap<>(); params.put("op", "getFeeds"); @@ -81,10 +85,6 @@ public class FeedsFragment extends Fragment implements OnSharedPreferenceChangeL params.put("include_nested", "true"); params.put("cat_id", String.valueOf(m_rootFeed.id)); - /* except marked */ - if (m_activity.getUnreadOnly() && m_rootFeed.id != -1) - params.put("unread_only", "true"); - return new ApiLoader(getContext(), params); } @@ -99,9 +99,13 @@ public class FeedsFragment extends Fragment implements OnSharedPreferenceChangeL Type listType = new TypeToken<List<Feed>>() {}.getType(); List<Feed> feedsJson = new Gson().fromJson(content, listType); - List<Feed> feeds = new ArrayList<>(); + if (m_activity.getUnreadOnly() && m_rootFeed.id != Feed.CAT_SPECIAL) + feedsJson = feedsJson.stream() + .filter(f -> f.unread > 0) + .collect(Collectors.toList()); + sortFeeds(feedsJson, m_rootFeed); if (m_enableParentBtn) { diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/RootCategoriesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/RootCategoriesFragment.java index ffa7b027..b61a2736 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/RootCategoriesFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/RootCategoriesFragment.java @@ -18,6 +18,7 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.HashMap; import java.util.List; +import java.util.stream.Collectors; public class RootCategoriesFragment extends FeedsFragment { private final String TAG = this.getClass().getSimpleName(); @@ -32,9 +33,6 @@ public class RootCategoriesFragment extends FeedsFragment { // this confusingly named option means "return top level categories only" params.put("enable_nested", "true"); - if (m_activity.getUnreadOnly()) - params.put("unread_only", "true"); - return new ApiLoader(getContext(), params); } @@ -76,7 +74,7 @@ public class RootCategoriesFragment extends FeedsFragment { } @Override - public void onLoadFinished(Loader<JsonElement> loader, JsonElement result) { + public void onLoadFinished(@NonNull Loader<JsonElement> loader, JsonElement result) { if (m_swipeLayout != null) m_swipeLayout.setRefreshing(false); if (result != null) { @@ -93,18 +91,21 @@ public class RootCategoriesFragment extends FeedsFragment { // virtual cats implemented in getCategories since api level 1 if (m_activity.getApiLevel() == 0) { - feeds.add(0, new Feed(-2, getString(R.string.cat_labels), false)); - feeds.add(1, new Feed(-1, getString(R.string.cat_special), false)); - feeds.add(new Feed(0, getString(R.string.cat_uncategorized), false)); + feeds.add(0, new Feed(-2, getString(R.string.cat_labels), true)); + feeds.add(1, new Feed(-1, getString(R.string.cat_special), true)); + feeds.add(new Feed(0, getString(R.string.cat_uncategorized), true)); } - if (feedsJson.stream().noneMatch(a -> a.id == -1)) - feeds.add(new Feed(-1, getString(R.string.cat_special), true)); + if (m_activity.getUnreadOnly()) + feedsJson = feedsJson.stream() + .filter(f -> f.id == Feed.CAT_SPECIAL || f.unread > 0) + .collect(Collectors.toList()); - for (Feed f : feedsJson) { - f.is_cat = true; - feeds.add(f); - } + feedsJson = feedsJson.stream() + .peek(f -> f.is_cat = true) + .collect(Collectors.toList()); + + feeds.addAll(feedsJson); feeds.add(new Feed(Feed.TYPE_DIVIDER)); feeds.add(new Feed(Feed.TYPE_TOGGLE_UNREAD, getString(R.string.unread_only), true)); |