summaryrefslogtreecommitdiff
path: root/app/src/main/java/org/terst/feedreader/data/FeedParser.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/org/terst/feedreader/data/FeedParser.kt')
-rw-r--r--app/src/main/java/org/terst/feedreader/data/FeedParser.kt10
1 files changed, 8 insertions, 2 deletions
diff --git a/app/src/main/java/org/terst/feedreader/data/FeedParser.kt b/app/src/main/java/org/terst/feedreader/data/FeedParser.kt
index 7a3ce93..ecb59dd 100644
--- a/app/src/main/java/org/terst/feedreader/data/FeedParser.kt
+++ b/app/src/main/java/org/terst/feedreader/data/FeedParser.kt
@@ -157,7 +157,11 @@ object FeedParser {
// landing as the article's primary key. An empty-string id broke
// Navigation Compose's route matching and crashed on tap.
guid = itemGuid?.ifBlank { null } ?: itemLink.ifBlank { null },
- title = itemTitle,
+ // RSS requires a title OR a description, not both, and feeds that
+ // take the second option are common enough to matter: every item in
+ // a Mastodon tag feed is title-less, which showed as a list of blank
+ // rows. See ItemTitles.
+ title = ItemTitles.titleFor(itemTitle, content, itemLink),
link = itemLink,
author = itemAuthor,
publishedAt = itemDate,
@@ -245,7 +249,9 @@ object FeedParser {
items += ParsedItem(
// Same blank-vs-null fix as the RSS path above.
guid = entryId?.ifBlank { null } ?: entryLink.ifBlank { null },
- title = entryTitle,
+ // Atom does require a title, but a feed that omits one should not
+ // render as a blank row either -- same treatment as RSS above.
+ title = ItemTitles.titleFor(entryTitle, content, entryLink),
link = entryLink,
author = entryAuthor,
publishedAt = entryDate,