diff options
| author | Andrew Dolgov <fox@fakecake.org> | 2025-09-15 14:51:15 +0300 |
|---|---|---|
| committer | Andrew Dolgov <fox@fakecake.org> | 2025-09-15 14:51:15 +0300 |
| commit | 02ba1c3b93adf3aeacae95527ce7b390306d4846 (patch) | |
| tree | d9a264016852f4d1c2a7218d4d2fa5057a965d65 /org.fox.ttrss/src/main/java/org | |
| parent | bab4c9e13c57a07579bdb1f0d91a2eb880f2970f (diff) | |
stop storing Article as parcelable (store id instead), remove Parcelable implementation from Article class
Diffstat (limited to 'org.fox.ttrss/src/main/java/org')
3 files changed, 12 insertions, 85 deletions
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java index 40d3b6a5..ff6fa9a6 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java @@ -83,7 +83,9 @@ public class ArticleFragment extends androidx.fragment.app.Fragment { super.onCreate(savedInstanceState); if (savedInstanceState != null) { - m_article = savedInstanceState.getParcelable("m_article"); + int articleId = savedInstanceState.getInt("m_articleId"); + + m_article = Application.getArticlesModel().getById(articleId); } } @@ -389,6 +391,6 @@ public class ArticleFragment extends androidx.fragment.app.Fragment { public void onSaveInstanceState(Bundle out) { super.onSaveInstanceState(out); - out.putParcelable("m_article", m_article); + out.putInt("m_articleId", m_article.id); } } diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleModel.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleModel.java index 9f4d8e1f..309b01fa 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleModel.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleModel.java @@ -431,4 +431,11 @@ public class ArticleModel extends AndroidViewModel implements ApiCommon.ApiCalle }).collect(Collectors.toList()); } + // returns null if not found + public Article getById(final int id) { + return m_articles.getValue().stream().filter(a -> a.id == id) + .findFirst() + .orElse(null); + } + } diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Article.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Article.java index 2c1966ad..cdffffe2 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Article.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Article.java @@ -1,8 +1,5 @@ package org.fox.ttrss.types; -import android.os.Parcel; -import android.os.Parcelable; - import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; @@ -16,7 +13,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; // TODO: serialize Labels -public class Article implements Parcelable { +public class Article { public static final int TYPE_AMR_FOOTER = -2; public static final int FLAVOR_KIND_ALBUM = 1; @@ -73,10 +70,6 @@ public class Article implements Parcelable { transient public String youtubeVid; transient public List<Element> mediaList = new ArrayList<>(); - public Article(Parcel in) { - readFromParcel(in); - } - public Article() { } @@ -237,81 +230,6 @@ public class Article implements Parcelable { mediaList = new ArrayList<>(clone.mediaList); } - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel out, int flags) { - out.writeInt(id); - out.writeInt(unread ? 1 : 0); - out.writeInt(marked ? 1 : 0); - out.writeInt(published ? 1 : 0); - out.writeInt(score); - out.writeInt(updated); - out.writeInt(is_updated ? 1 : 0); - out.writeString(title); - out.writeString(link); - out.writeInt(feed_id); - out.writeStringList(tags); - out.writeString(content); - out.writeString(excerpt); - out.writeList(attachments); - out.writeString(feed_title); - out.writeInt(comments_count); - out.writeString(comments_link); - out.writeInt(always_display_attachments ? 1 : 0); - out.writeString(author); - out.writeString(note); - out.writeInt(selected ? 1 : 0); - out.writeString(site_url); - } - - public void readFromParcel(Parcel in) { - id = in.readInt(); - unread = in.readInt() == 1; - marked = in.readInt() == 1; - published = in.readInt() == 1; - score = in.readInt(); - updated = in.readInt(); - is_updated = in.readInt() == 1; - title = in.readString(); - link = in.readString(); - feed_id = in.readInt(); - - if (tags == null) tags = new ArrayList<>(); - in.readStringList(tags); - - content = in.readString(); - excerpt = in.readString(); - - attachments = new ArrayList<>(); - in.readList(attachments, Attachment.class.getClassLoader()); - - feed_title = in.readString(); - - comments_count = in.readInt(); - comments_link = in.readString(); - always_display_attachments = in.readInt() == 1; - author = in.readString(); - note = in.readString(); - selected = in.readInt() == 1; - site_url = in.readString(); - } - - @SuppressWarnings("rawtypes") - public static final Parcelable.Creator CREATOR = - new Parcelable.Creator() { - public Article createFromParcel(Parcel in) { - return new Article(in); - } - - public Article[] newArray(int size) { - return new Article[size]; - } - }; - /** * set fields which might be missing during JSON deserialization to sane values */ |