summaryrefslogtreecommitdiff
path: root/app/src/main/java/org/terst/feedreader/ui/ShareReceiverActivity.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/org/terst/feedreader/ui/ShareReceiverActivity.kt')
-rw-r--r--app/src/main/java/org/terst/feedreader/ui/ShareReceiverActivity.kt25
1 files changed, 6 insertions, 19 deletions
diff --git a/app/src/main/java/org/terst/feedreader/ui/ShareReceiverActivity.kt b/app/src/main/java/org/terst/feedreader/ui/ShareReceiverActivity.kt
index 656bebc..1a383ae 100644
--- a/app/src/main/java/org/terst/feedreader/ui/ShareReceiverActivity.kt
+++ b/app/src/main/java/org/terst/feedreader/ui/ShareReceiverActivity.kt
@@ -22,13 +22,11 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp
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.readability.ReaderExtractor
+import org.terst.feedreader.data.ensureStandaloneArticle
import org.terst.feedreader.stash.StashClient
import org.terst.feedreader.stash.StashSaveResult
-import java.security.MessageDigest
private val URL_REGEX = Regex("""https?://\S+""")
@@ -63,29 +61,18 @@ private fun ShareReceiverContent(url: String?, onDone: () -> Unit) {
if (url == null) return@LaunchedEffect
val db = AppDatabase.get(context)
- val extracted = ReaderExtractor.extract(context, url)
- val id = MessageDigest.getInstance("SHA-256").digest(url.toByteArray()).joinToString("") { "%02x".format(it) }
- db.articleDao().upsert(
- ArticleEntity(
- id = id,
- feedId = null,
- title = extracted?.title ?: url,
- link = url,
- extractedContent = extracted?.content,
- isSaved = true,
- createdAt = System.currentTimeMillis()
- )
- )
+ val entity = ensureStandaloneArticle(context, db, url)
+ if (!entity.isSaved) db.articleDao().setSaved(entity.id, true)
val settings = Settings(context)
val client = StashClient(Net.client, settings.stashBaseUrlNow(), settings.stashApiKeyNow())
- status = when (val result = client.saveArticle(url, extracted?.title)) {
+ status = when (val result = client.saveArticle(url, entity.title)) {
is StashSaveResult.Saved -> {
- db.articleDao().setStashArtifactId(id, result.artifact.id)
+ db.articleDao().setStashArtifactId(entity.id, result.artifact.id)
"Saved for offline reading and archived to Stash"
}
is StashSaveResult.AlreadySaved -> {
- db.articleDao().setStashArtifactId(id, result.existingId)
+ db.articleDao().setStashArtifactId(entity.id, result.existingId)
"Saved for offline reading (already in Stash)"
}
is StashSaveResult.Failed ->