From a3296f5c14a5fb95feaa3751044a1995935e6f3e Mon Sep 17 00:00:00 2001 From: Peter Stone Date: Sat, 22 Aug 2026 01:01:05 +0000 Subject: Feed writes: bulk OPML upsert, targeted fetch-result update, shared toggle - AddFeedScreen: OPML import no longer crashes the app on a non-XML/corrupt file (try/catch around the whole import). Bulk upsertAll() instead of a per-feed getById()+upsert() loop -- 2N sequential DB round-trips for N feeds otherwise, real cost at 100+ feed subscription lists. - FeedDao.updateFetchResult only writes the columns a fetch actually produces, instead of a full-row @Update built from a feed snapshot read before a (possibly slow) network round-trip -- the old path could silently revert a readerModeEnabled/folder edit made via FeedListScreen while that feed's fetch was still in flight. - setReaderModeEnabled(feed, enabled) persists the toggle and returns the exact confirmation text, shared by FeedListScreen's per-row toggle and ReaderScreen's toggleFeedReaderMode -- previously two independently-typed copies of the same snackbar message. --- app/src/main/java/org/terst/feedreader/ui/ReaderScreen.kt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'app/src/main/java/org/terst/feedreader/ui/ReaderScreen.kt') diff --git a/app/src/main/java/org/terst/feedreader/ui/ReaderScreen.kt b/app/src/main/java/org/terst/feedreader/ui/ReaderScreen.kt index b586fbc..ae63258 100644 --- a/app/src/main/java/org/terst/feedreader/ui/ReaderScreen.kt +++ b/app/src/main/java/org/terst/feedreader/ui/ReaderScreen.kt @@ -62,6 +62,7 @@ import org.terst.feedreader.data.ArticleEntity import org.terst.feedreader.data.FeedEntity import org.terst.feedreader.data.ensureStandaloneArticle import org.terst.feedreader.data.saveArticleToStash +import org.terst.feedreader.data.setReaderModeEnabled import org.terst.feedreader.readability.ReaderExtractor import java.net.URLEncoder @@ -229,8 +230,7 @@ private fun ReaderContent( val newEnabled = !f.readerModeEnabled feed = f.copy(readerModeEnabled = newEnabled) scope.launch { - db.feedDao().update(f.copy(readerModeEnabled = newEnabled)) - val feedLabel = f.title.ifBlank { "this feed" } + val message = db.feedDao().setReaderModeEnabled(f, newEnabled) if (newEnabled) { if (readerContent == null) { isExtracting = true @@ -243,13 +243,12 @@ private fun ReaderContent( } } isReaderMode = true - snackbarHostState.showSnackbar("Reader mode enabled for $feedLabel") } else { isReaderMode = false readerContent = null db.articleDao().clearExtractedContent(articleId) - snackbarHostState.showSnackbar("Reader mode disabled for $feedLabel") } + snackbarHostState.showSnackbar(message) } } -- cgit v1.2.3