summaryrefslogtreecommitdiff
path: root/org.fox.ttrss/src
diff options
context:
space:
mode:
authorAndrew Dolgov <fox@fakecake.org>2025-05-17 12:50:41 +0300
committerAndrew Dolgov <fox@fakecake.org>2025-05-17 12:50:41 +0300
commit58ca2ad6dfe82234362e6d8898bbd53ab4e2cfaa (patch)
tree916fec8f31a1dcd4ff8a699abf385960b481ba7c /org.fox.ttrss/src
parent046aaae1ed5e1cf1c0b14d908bfbfb468c41af27 (diff)
display disabled feeds and feeds with error status if returned by API
Diffstat (limited to 'org.fox.ttrss/src')
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java15
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsModel.java7
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/types/Feed.java16
3 files changed, 35 insertions, 3 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 51a852fc..6d3fd988 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
@@ -6,9 +6,11 @@ import android.app.Dialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
+import android.content.res.ColorStateList;
import android.graphics.Typeface;
import android.os.Bundle;
import android.util.Log;
+import android.util.TypedValue;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
@@ -20,6 +22,7 @@ import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
+import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import androidx.preference.PreferenceManager;
@@ -429,7 +432,9 @@ public class FeedsFragment extends Fragment implements OnSharedPreferenceChangeL
return oldItem.id == newItem.id &&
oldItem.is_cat == newItem.is_cat &&
oldItem.title.equals(newItem.title) &&
- oldItem.unread == newItem.unread;
+ oldItem.unread == newItem.unread &&
+ oldItem.update_interval != newItem.update_interval &&
+ oldItem.last_error.equals(newItem.last_error);
}
}
@@ -484,6 +489,14 @@ public class FeedsFragment extends Fragment implements OnSharedPreferenceChangeL
holder.title.setTypeface(null, Typeface.NORMAL);
}
+ TypedValue tv = new TypedValue();
+ m_activity.getTheme().resolveAttribute(feed.last_error.isEmpty() ? R.attr.colorOnSurface : R.attr.colorError, tv, true);
+
+ holder.title.setTextColor(ColorStateList.valueOf(ContextCompat.getColor(m_activity, tv.resourceId)));
+
+ Log.d(TAG, feed.update_interval + " " + feed.title);
+
+ holder.title.setAlpha(feed.update_interval == -1 ? 0.5f : 1f);
}
if (holder.unreadCounter != null) {
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsModel.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsModel.java
index bd6ca21f..171fb29a 100644
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsModel.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsModel.java
@@ -24,6 +24,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import java.util.stream.Collectors;
public class FeedsModel extends AndroidViewModel implements ApiCommon.ApiCaller {
private final String TAG = this.getClass().getSimpleName();
@@ -117,10 +118,12 @@ public class FeedsModel extends AndroidViewModel implements ApiCommon.ApiCaller
JsonArray content = result.getAsJsonArray();
if (content != null) {
- Type listType = new TypeToken<List<Feed>>() {
- }.getType();
+ Type listType = new TypeToken<List<Feed>>() {}.getType();
+
List<Feed> feeds = new Gson().fromJson(content, listType);
+ feeds = feeds.stream().peek(Feed::fixNullFields).collect(Collectors.toList());
+
m_feeds.postValue(feeds);
}
} catch (Exception e) {
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Feed.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Feed.java
index f8a2be8f..c1ec027a 100644
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Feed.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Feed.java
@@ -18,19 +18,23 @@ public class Feed implements Comparable<Feed>, Parcelable {
public int cat_id;
public int last_updated;
public int order_id;
+ public String last_error;
public boolean is_cat;
+ public int update_interval;
transient public boolean always_open_headlines;
public Feed(int id) {
this.id = id;
this.title = "ID:" + id;
this.is_cat = false;
+ this.last_error = "";
}
public Feed(int id, String title, boolean is_cat) {
this.id = id;
this.title = title;
this.is_cat = is_cat;
+ this.last_error = "";
}
public Feed(Feed feed) {
@@ -44,6 +48,8 @@ public class Feed implements Comparable<Feed>, Parcelable {
order_id = feed.order_id;
is_cat = feed.is_cat;
always_open_headlines = feed.always_open_headlines;
+ last_error = feed.last_error;
+ update_interval = feed.update_interval;
}
public static final int MARKED = -1;
@@ -116,6 +122,12 @@ public class Feed implements Comparable<Feed>, Parcelable {
return this.title.compareTo(feed.title);
}
+ public void fixNullFields() {
+ if (feed_url == null) feed_url = "";
+ if (title == null) title = "";
+ if (last_error == null) last_error = "";
+ }
+
@Override
public int describeContents() {
return 0;
@@ -133,6 +145,8 @@ public class Feed implements Comparable<Feed>, Parcelable {
out.writeInt(is_cat ? 1 : 0);
out.writeInt(order_id);
out.writeInt(always_open_headlines ? 1 : 0);
+ out.writeString(last_error);
+ out.writeInt(update_interval);
}
public void readFromParcel(Parcel in) {
@@ -146,6 +160,8 @@ public class Feed implements Comparable<Feed>, Parcelable {
is_cat = in.readInt() == 1;
order_id = in.readInt();
always_open_headlines = in.readInt() == 1;
+ last_error = in.readString();
+ update_interval = in.readInt();
}
@SuppressWarnings("rawtypes")