From 1c0a7bc7b4b439540c9aaec1143d2dbc41e7f75a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=81=E7=89=9B?= <76513019+niu-hb@users.noreply.github.com> Date: Sun, 20 Oct 2024 20:05:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96rss=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E9=80=BB=E8=BE=91=20(#4286)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/io/legado/app/data/dao/RssArticleDao.kt | 3 +++ .../io/legado/app/ui/rss/article/RssArticlesViewModel.kt | 8 +++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/io/legado/app/data/dao/RssArticleDao.kt b/app/src/main/java/io/legado/app/data/dao/RssArticleDao.kt index 2ed311aa38c2..89f2d53cab6e 100644 --- a/app/src/main/java/io/legado/app/data/dao/RssArticleDao.kt +++ b/app/src/main/java/io/legado/app/data/dao/RssArticleDao.kt @@ -23,6 +23,9 @@ interface RssArticleDao { @Insert(onConflict = OnConflictStrategy.REPLACE) fun insert(vararg rssArticle: RssArticle) + @Insert(onConflict = OnConflictStrategy.IGNORE) + fun append(vararg rssArticle: RssArticle) + @Query("delete from rssArticles where origin = :origin and sort = :sort and `order` < :order") fun clearOld(origin: String, sort: String, order: Long) diff --git a/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesViewModel.kt b/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesViewModel.kt index 2c834682a181..18b39c8ba0e1 100644 --- a/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesViewModel.kt @@ -80,14 +80,16 @@ class RssArticlesViewModel(application: Application) : BaseViewModel(application return } val firstArticle = articles.first() - val dbArticle = appDb.rssArticleDao.get(firstArticle.origin, firstArticle.link) - if (dbArticle != null) { + val dbFirstArticle = appDb.rssArticleDao.get(firstArticle.origin, firstArticle.link) + val lastArticle = articles.last() + val dbLastArticle = appDb.rssArticleDao.get(lastArticle.origin, lastArticle.link) + if (dbFirstArticle != null && dbLastArticle != null) { loadFinallyLiveData.postValue(false) } else { articles.forEach { it.order = order-- } - appDb.rssArticleDao.insert(*articles.toTypedArray()) + appDb.rssArticleDao.append(*articles.toTypedArray()) } }