diff --git a/app/src/main/java/io/legado/app/data/repository/ExploreRepository.kt b/app/src/main/java/io/legado/app/data/repository/ExploreRepository.kt index d0319b656..ec78103cd 100644 --- a/app/src/main/java/io/legado/app/data/repository/ExploreRepository.kt +++ b/app/src/main/java/io/legado/app/data/repository/ExploreRepository.kt @@ -85,6 +85,12 @@ class ExploreRepositoryImpl( return WebBook.exploreBookSuspend(bookSource, url, page, key = key, isSearch = key != null) } + override suspend fun saveSearchBooks(books: List) { + if (books.isNotEmpty()) { + appDb.searchBookDao.insert(books) + } + } + override suspend fun getSourceExploreKinds(sourceUrl: String): List = withContext(IO) { val source = appDb.bookSourceDao.getBookSource(sourceUrl) return@withContext source?.exploreKinds() ?: emptyList() diff --git a/app/src/main/java/io/legado/app/domain/gateway/ExploreBooksGateway.kt b/app/src/main/java/io/legado/app/domain/gateway/ExploreBooksGateway.kt index d1229e15e..dee0e372a 100644 --- a/app/src/main/java/io/legado/app/domain/gateway/ExploreBooksGateway.kt +++ b/app/src/main/java/io/legado/app/domain/gateway/ExploreBooksGateway.kt @@ -11,4 +11,5 @@ interface ExploreBooksGateway { page: Int, key: String? = null ): List + suspend fun saveSearchBooks(books: List) } diff --git a/app/src/main/java/io/legado/app/domain/usecase/ExploreBooksUseCase.kt b/app/src/main/java/io/legado/app/domain/usecase/ExploreBooksUseCase.kt index fb234ddd9..1d97ff0cd 100644 --- a/app/src/main/java/io/legado/app/domain/usecase/ExploreBooksUseCase.kt +++ b/app/src/main/java/io/legado/app/domain/usecase/ExploreBooksUseCase.kt @@ -26,6 +26,7 @@ class ExploreBooksUseCase( ): ExploreResult = withContext(Dispatchers.IO) { val request = resolveRequest(sourceUrl, moduleUrl, args, key) val books = gateway.exploreBooks(request.source, request.url, page, key = key) + if (books.isNotEmpty()) gateway.saveSearchBooks(books) ExploreResult(request.url, books) } @@ -47,7 +48,9 @@ class ExploreBooksUseCase( if (next.isEmpty()) break books = (books + next) } - books.take(MAX_RANKING_BOOKS) + val result = books.take(MAX_RANKING_BOOKS) + if (result.isNotEmpty()) gateway.saveSearchBooks(result) + result } private suspend fun resolveRequest(