diff --git a/app/src/main/java/io/legado/app/ui/book/explore/ExploreShowActivity.kt b/app/src/main/java/io/legado/app/ui/book/explore/ExploreShowActivity.kt index 161a98c38..23ec1a0d2 100644 --- a/app/src/main/java/io/legado/app/ui/book/explore/ExploreShowActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/explore/ExploreShowActivity.kt @@ -84,11 +84,7 @@ class ExploreShowActivity : VMBaseActivity = Collections.synchronizedSet(hashSetOf()) + val bookshelf: MutableSet = ConcurrentHashMap.newKeySet() val upAdapterLiveData = MutableLiveData() val booksData = MutableLiveData>() val errorLiveData = MutableLiveData() @@ -32,7 +32,12 @@ class ExploreShowViewModel(application: Application) : BaseViewModel(application init { execute { appDb.bookDao.flowAll().mapLatest { books -> - books.map { "${it.name}-${it.author}" } + val keys = arrayListOf() + books.forEach { + keys.add("${it.name}-${it.author}") + keys.add(it.name) + } + keys }.collect { bookshelf.clear() bookshelf.addAll(it) @@ -70,4 +75,12 @@ class ExploreShowViewModel(application: Application) : BaseViewModel(application } } + fun isInBookShelf(name: String, author: String): Boolean { + return if (author.isNotBlank()) { + bookshelf.contains("$name-$author") + } else { + bookshelf.contains(name) + } + } + } diff --git a/app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt b/app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt index b0e9e29b2..3220c67f2 100644 --- a/app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt @@ -416,11 +416,7 @@ class SearchActivity : VMBaseActivity = Collections.synchronizedSet(hashSetOf()) + val bookshelf: MutableSet = ConcurrentHashMap.newKeySet() val upAdapterLiveData = MutableLiveData() var searchBookLiveData = ConflateLiveData>(1000) val searchScope: SearchScope = SearchScope(AppConfig.searchScope) @@ -60,7 +60,12 @@ class SearchViewModel(application: Application) : BaseViewModel(application) { init { execute { appDb.bookDao.flowAll().mapLatest { books -> - books.map { "${it.name}-${it.author}" } + val keys = arrayListOf() + books.forEach { + keys.add("${it.name}-${it.author}") + keys.add(it.name) + } + keys }.collect { bookshelf.clear() bookshelf.addAll(it) @@ -71,6 +76,14 @@ class SearchViewModel(application: Application) : BaseViewModel(application) { } } + fun isInBookShelf(name: String, author: String): Boolean { + return if (author.isNotBlank()) { + bookshelf.contains("$name-$author") + } else { + bookshelf.contains(name) + } + } + /** * 开始搜索 */ @@ -101,7 +114,7 @@ class SearchViewModel(application: Application) : BaseViewModel(application) { fun saveSearchKey(key: String) { execute { appDb.searchKeywordDao.get(key)?.let { - it.usage = it.usage + 1 + it.usage += 1 it.lastUseTime = System.currentTimeMillis() appDb.searchKeywordDao.update(it) } ?: appDb.searchKeywordDao.insert(SearchKeyword(key, 1))