summaryrefslogtreecommitdiff
path: root/org.fox.ttrss
diff options
context:
space:
mode:
authorAndrew Dolgov <fox@fakecake.org>2025-05-16 14:35:57 +0300
committerAndrew Dolgov <fox@fakecake.org>2025-05-16 14:35:57 +0300
commit0aee78089a45fdf99f1d21a379b21ea5e66e65fb (patch)
tree4c22413c4a821c5b598740a5e82bbbb24b235d2b /org.fox.ttrss
parent2f9de04a2f4a17e062170848683487d9c8c19b5e (diff)
filter unread only feeds clientside, switch some foreaches to streams
Diffstat (limited to 'org.fox.ttrss')
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java16
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/RootCategoriesFragment.java27
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));