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()) } }