From 52d7877fccd60a1dae33d877ba6aa765dc098a52 Mon Sep 17 00:00:00 2001 From: Peter Stone Date: Wed, 22 Jul 2026 16:26:45 +0000 Subject: First round of testing feedback: images, unread landing, dark, delete - Fix OPML import status message reporting the raw pre-dedup count (144) instead of the actual unique feed count after Room's upsert collapses duplicates (108) -- cosmetic bug, the DB was already correct. - Article thumbnails: extract media:thumbnail/enclosure or the first in feed content, show via Coil in the article list. - App now lands on Unread instead of the feed list; a top-bar icon gets from there to the feed list (forward nav, not back-stack pop, since Unread is now the root). - Dark color scheme by default. - Delete-feed action (with confirmation) on each feed row -- was entirely missing. Deletes its non-saved articles too, so they don't linger as orphaned rows in the cross-feed Unread view; saved articles are kept regardless. - Room migration 1->2 for the new imageUrl column (real migration, not destructive fallback, since there's now real on-device subscription data from testing). Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01EZ7ikw2ukGJFTHE3bJS7zL --- app/src/main/java/org/terst/feedreader/data/Daos.kt | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'app/src/main/java/org/terst/feedreader/data/Daos.kt') diff --git a/app/src/main/java/org/terst/feedreader/data/Daos.kt b/app/src/main/java/org/terst/feedreader/data/Daos.kt index 0a41f0c..2240ff4 100644 --- a/app/src/main/java/org/terst/feedreader/data/Daos.kt +++ b/app/src/main/java/org/terst/feedreader/data/Daos.kt @@ -64,6 +64,13 @@ interface ArticleDao { @Query("UPDATE articles SET isRead = 1 WHERE feedId = :feedId") suspend fun markAllReadForFeed(feedId: String) + // Run when unsubscribing from a feed. Saved articles are deliberately kept + // regardless (isSaved is a separate, durable "keep forever" concept, + // independent of subscription) -- everything else is deleted so it doesn't + // linger forever as an orphaned row cluttering the cross-feed Unread view. + @Query("DELETE FROM articles WHERE feedId = :feedId AND isSaved = 0") + suspend fun deleteUnsavedByFeed(feedId: String) + @Query("UPDATE articles SET extractedContent = :content WHERE id = :id") suspend fun setExtractedContent(id: String, content: String) -- cgit v1.2.3