summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-08-22 00:56:51 +0000
committerPeter Stone <thepeterstone@gmail.com>2026-08-22 00:56:51 +0000
commit70c537fae9dc5e22bf8bb7bc226221b4e66b994d (patch)
tree5e2c1342e0d4064fc743d44fddc2634ebc42f5de
parentb3aa6845a7eaaade61eab71291a25b5ea2b79bd5 (diff)
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.
-rw-r--r--app/src/main/java/org/terst/feedreader/ui/LinkReaderScreen.kt40
-rw-r--r--app/src/main/java/org/terst/feedreader/ui/ReaderScreen.kt40
2 files changed, 12 insertions, 68 deletions
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 = {