From 70c537fae9dc5e22bf8bb7bc226221b4e66b994d Mon Sep 17 00:00:00 2001 From: Peter Stone Date: Sat, 22 Aug 2026 00:56:51 +0000 Subject: Adopt shared saveArticleToStash in ReaderScreen and LinkReaderScreen Replaces the 4 remaining copy-pasted StashClient-and-branch call sites (ReaderScreen x2, LinkReaderScreen x2) with the shared helper added in the previous commit. --- .../org/terst/feedreader/ui/LinkReaderScreen.kt | 40 ++++------------------ .../java/org/terst/feedreader/ui/ReaderScreen.kt | 40 ++++------------------ 2 files changed, 12 insertions(+), 68 deletions(-) (limited to 'app/src') diff --git a/app/src/main/java/org/terst/feedreader/ui/LinkReaderScreen.kt b/app/src/main/java/org/terst/feedreader/ui/LinkReaderScreen.kt index c29a585..3451833 100644 --- a/app/src/main/java/org/terst/feedreader/ui/LinkReaderScreen.kt +++ b/app/src/main/java/org/terst/feedreader/ui/LinkReaderScreen.kt @@ -44,13 +44,10 @@ import androidx.compose.ui.viewinterop.AndroidView import kotlinx.coroutines.launch import org.terst.feedreader.data.AppDatabase import org.terst.feedreader.data.ArticleEntity -import org.terst.feedreader.data.Net -import org.terst.feedreader.data.Settings import org.terst.feedreader.data.ensureStandaloneArticle +import org.terst.feedreader.data.saveArticleToStash import org.terst.feedreader.data.urlToArticleId import org.terst.feedreader.readability.ReaderExtractor -import org.terst.feedreader.stash.StashClient -import org.terst.feedreader.stash.StashSaveResult import java.net.URLEncoder /** @@ -165,22 +162,9 @@ fun LinkReaderScreen(url: String, onBack: () -> Unit, onOpenLink: (String) -> Un isSaving = true scope.launch { val a = ensureArticleRow() - val settings = Settings(context) - val client = StashClient(Net.client, settings.stashBaseUrlNow(), settings.stashApiKeyNow()) - when (val result = client.saveArticle(a.link, a.title)) { - is StashSaveResult.Saved -> { - db.articleDao().setStashArtifactId(a.id, result.artifact.id) - article = a.copy(stashArtifactId = result.artifact.id) - snackbarHostState.showSnackbar("Saved to Stash") - } - is StashSaveResult.AlreadySaved -> { - db.articleDao().setStashArtifactId(a.id, result.existingId) - article = a.copy(stashArtifactId = result.existingId) - snackbarHostState.showSnackbar("Already in Stash") - } - is StashSaveResult.Failed -> - snackbarHostState.showSnackbar("Save failed: ${result.message}") - } + val outcome = saveArticleToStash(context, db, a.id, a.link, a.title) + outcome.artifactId?.let { article = a.copy(stashArtifactId = it) } + snackbarHostState.showSnackbar(outcome.message) isSaving = false } } @@ -293,20 +277,8 @@ fun LinkReaderScreen(url: String, onBack: () -> Unit, onOpenLink: (String) -> Un onSaveToStash = { scope.launch { val entity = ensureStandaloneArticle(context, db, linkUrl) - val settings = Settings(context) - val client = StashClient(Net.client, settings.stashBaseUrlNow(), settings.stashApiKeyNow()) - when (val result = client.saveArticle(linkUrl, entity.title)) { - is StashSaveResult.Saved -> { - db.articleDao().setStashArtifactId(entity.id, result.artifact.id) - snackbarHostState.showSnackbar("Saved to Stash") - } - is StashSaveResult.AlreadySaved -> { - db.articleDao().setStashArtifactId(entity.id, result.existingId) - snackbarHostState.showSnackbar("Already in Stash") - } - is StashSaveResult.Failed -> - snackbarHostState.showSnackbar("Save failed: ${result.message}") - } + val outcome = saveArticleToStash(context, db, entity.id, linkUrl, entity.title) + snackbarHostState.showSnackbar(outcome.message) } }, onSaveForLater = { 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 06227b7..1fe198e 100644 --- a/app/src/main/java/org/terst/feedreader/ui/ReaderScreen.kt +++ b/app/src/main/java/org/terst/feedreader/ui/ReaderScreen.kt @@ -60,12 +60,9 @@ import kotlinx.coroutines.launch import org.terst.feedreader.data.AppDatabase import org.terst.feedreader.data.ArticleEntity import org.terst.feedreader.data.FeedEntity -import org.terst.feedreader.data.Net -import org.terst.feedreader.data.Settings import org.terst.feedreader.data.ensureStandaloneArticle +import org.terst.feedreader.data.saveArticleToStash import org.terst.feedreader.readability.ReaderExtractor -import org.terst.feedreader.stash.StashClient -import org.terst.feedreader.stash.StashSaveResult import java.net.URLEncoder /** @@ -339,22 +336,9 @@ private fun ReaderContent( val a = currentArticle ?: return@DropdownMenuItem isSaving = true scope.launch { - val settings = Settings(context) - val client = StashClient(Net.client, settings.stashBaseUrlNow(), settings.stashApiKeyNow()) - when (val result = client.saveArticle(a.link, a.title)) { - is StashSaveResult.Saved -> { - db.articleDao().setStashArtifactId(a.id, result.artifact.id) - article = a.copy(stashArtifactId = result.artifact.id) - snackbarHostState.showSnackbar("Saved to Stash") - } - is StashSaveResult.AlreadySaved -> { - db.articleDao().setStashArtifactId(a.id, result.existingId) - article = a.copy(stashArtifactId = result.existingId) - snackbarHostState.showSnackbar("Already in Stash") - } - is StashSaveResult.Failed -> - snackbarHostState.showSnackbar("Save failed: ${result.message}") - } + val outcome = saveArticleToStash(context, db, a.id, a.link, a.title) + outcome.artifactId?.let { article = a.copy(stashArtifactId = it) } + snackbarHostState.showSnackbar(outcome.message) isSaving = false } } @@ -501,20 +485,8 @@ private fun ReaderContent( onSaveToStash = { scope.launch { val entity = ensureStandaloneArticle(context, db, url) - val settings = Settings(context) - val client = StashClient(Net.client, settings.stashBaseUrlNow(), settings.stashApiKeyNow()) - when (val result = client.saveArticle(url, entity.title)) { - is StashSaveResult.Saved -> { - db.articleDao().setStashArtifactId(entity.id, result.artifact.id) - snackbarHostState.showSnackbar("Saved to Stash") - } - is StashSaveResult.AlreadySaved -> { - db.articleDao().setStashArtifactId(entity.id, result.existingId) - snackbarHostState.showSnackbar("Already in Stash") - } - is StashSaveResult.Failed -> - snackbarHostState.showSnackbar("Save failed: ${result.message}") - } + val outcome = saveArticleToStash(context, db, entity.id, url, entity.title) + snackbarHostState.showSnackbar(outcome.message) } }, onSaveForLater = { -- cgit v1.2.3