diff options
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.kt | 25 |
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 -> |
