MangaScreen: Fix close in action mode exists from screen (#10160)

* MangaScreen: Fix close in action mode exists from screen

* L
This commit is contained in:
AntsyLich 2023-11-22 09:08:41 +06:00 committed by GitHub
parent 1fbf8ca079
commit 3006604922
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 14 deletions

View file

@ -266,13 +266,12 @@ private fun MangaScreenSmallImpl(
) { ) {
val chapterListState = rememberLazyListState() val chapterListState = rememberLazyListState()
val chapters = remember(state) { state.processedChapters } val (chapters, listItem, isAnySelected) = remember(state) {
val listItem = remember(state) { state.chapterListItems } Triple(
first = state.processedChapters,
val isAnySelected by remember { second = state.chapterListItems,
derivedStateOf { third = state.isAnySelected,
chapters.fastAny { it.selected } )
}
} }
val internalOnBackPressed = { val internalOnBackPressed = {
@ -520,13 +519,12 @@ fun MangaScreenLargeImpl(
val layoutDirection = LocalLayoutDirection.current val layoutDirection = LocalLayoutDirection.current
val density = LocalDensity.current val density = LocalDensity.current
val chapters = remember(state) { state.processedChapters } val (chapters, listItem, isAnySelected) = remember(state) {
val listItem = remember(state) { state.chapterListItems } Triple(
first = state.processedChapters,
val isAnySelected by remember { second = state.chapterListItems,
derivedStateOf { third = state.isAnySelected,
chapters.fastAny { it.selected } )
}
} }
val insetPadding = WindowInsets.systemBars.only(WindowInsetsSides.Horizontal).asPaddingValues() val insetPadding = WindowInsets.systemBars.only(WindowInsetsSides.Horizontal).asPaddingValues()

View file

@ -6,6 +6,7 @@ import androidx.compose.material3.SnackbarResult
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.ui.util.fastAny
import cafe.adriel.voyager.core.model.StateScreenModel import cafe.adriel.voyager.core.model.StateScreenModel
import cafe.adriel.voyager.core.model.screenModelScope import cafe.adriel.voyager.core.model.screenModelScope
import eu.kanade.core.preference.asState import eu.kanade.core.preference.asState
@ -1052,6 +1053,10 @@ class MangaScreenModel(
chapters.applyFilters(manga).toList() chapters.applyFilters(manga).toList()
} }
val isAnySelected by lazy {
chapters.fastAny { it.selected }
}
val chapterListItems by lazy { val chapterListItems by lazy {
processedChapters.insertSeparators { before, after -> processedChapters.insertSeparators { before, after ->
val (lowerChapter, higherChapter) = if (manga.sortDescending()) { val (lowerChapter, higherChapter) = if (manga.sortDescending()) {