From d029f3016eb601c89e0b6094bba8a22307e5a392 Mon Sep 17 00:00:00 2001 From: Kudomaga <1321903405@qq.com> Date: Wed, 25 Mar 2026 09:53:58 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BC=98=E5=8C=96]=20=E7=BB=A7=E7=BB=AD?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=B9=A6=E6=9E=B6=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/ui/main/bookshelf/BookShelfItem.kt | 2 ++ .../io/legado/app/ui/main/bookshelf/BookshelfViewModel.kt | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookShelfItem.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookShelfItem.kt index d95becea1..2d287df19 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookShelfItem.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookShelfItem.kt @@ -1,9 +1,11 @@ package io.legado.app.ui.main.bookshelf +import androidx.compose.runtime.Stable import io.legado.app.constant.BookType import io.legado.app.data.entities.Book import kotlin.math.max +@Stable data class BookShelfItem( val bookUrl: String, val name: String, diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfViewModel.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfViewModel.kt index 15b8c34fd..14d7b4110 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfViewModel.kt @@ -122,7 +122,10 @@ class BookshelfViewModel( val allGroupsFlow: StateFlow> = bookGroupRepository.flowAll() .stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), emptyList()) - private val allBooksFlow = appDb.bookDao.flowBookShelf().flowOn(Dispatchers.Default) + private val allBooksFlow = appDb.bookDao.flowBookShelf() + .map { list -> list.map { it.toBookShelfItem() } } + .distinctUntilChanged() + .flowOn(Dispatchers.Default) @OptIn(ExperimentalCoroutinesApi::class) val booksFlow = combine(groupIdFlow, refreshTrigger) { groupId, _ -> groupId } @@ -132,7 +135,7 @@ class BookshelfViewModel( list.map { it.toBookShelfItem() }, groupsFlow.value.find { it.groupId == groupId }) } - }.flowOn(Dispatchers.Default) + }.distinctUntilChanged().flowOn(Dispatchers.Default) private val groupPreviewsFlow = combine(groupsFlow, allBooksFlow, refreshTrigger) { groups, allBooks, _ ->