diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookContract.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookContract.kt index 6c43618e4..7370a0ce6 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookContract.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookContract.kt @@ -43,7 +43,6 @@ sealed interface ReadBookMenuRoute { data object AutoRead : ReadBookMenuRoute data object PaddingConfig : ReadBookMenuRoute data object HeaderFooterConfig : ReadBookMenuRoute - data class Bookmark(val bookmark: io.legado.app.data.entities.Bookmark) : ReadBookMenuRoute } @Stable diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookMenuBar.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookMenuBar.kt index 140849929..51d927ef6 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookMenuBar.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookMenuBar.kt @@ -167,7 +167,6 @@ import io.legado.app.ui.theme.LegadoTheme import io.legado.app.ui.theme.hazeStyle.HazeLegado import io.legado.app.ui.widget.components.AppSlider import io.legado.app.ui.widget.components.AppVerticalSlider -import io.legado.app.ui.widget.components.bookmark.BookmarkEditContent import io.legado.app.ui.widget.components.button.series.SmallTonalButton import io.legado.app.ui.widget.components.divider.PillDivider import io.legado.app.ui.widget.components.menuItem.MenuItemIcon @@ -764,23 +763,6 @@ private fun ReadBookMenuSurface( } } - is ReadBookMenuRoute.Bookmark -> { - ReadBookMenuRoutePage( - title = targetRoute.bookmark.chapterName, - maxHeight = maxHeight, - scrollContent = true, - bottomPadding = if (extendSurfaceToNavigationBar) navBarHeight else 0.dp, - onBack = { onIntent(ReadBookIntent.ReadMenuBack) }, - ) { - Box(Modifier.padding(horizontal = 16.dp)) { - BookmarkEditContent( - bookmark = targetRoute.bookmark, - onSave = { onIntent(ReadBookIntent.SaveBookmark(it)) }, - onDelete = { onIntent(ReadBookIntent.DeleteBookmark(it)) }, - ) - } - } - } } } } @@ -2420,7 +2402,6 @@ private fun ReadMenuLiquidSlider( val rangeEnd = valueRange.endInclusive val range = rangeEnd - rangeStart val animationScope = rememberCoroutineScope() - var didDrag by remember { mutableStateOf(false) } val isLtr = LocalLayoutDirection.current == LayoutDirection.Ltr val dampedDragAnimation = remember(animationScope, trackWidth, rangeStart, rangeEnd, isLtr) { DampedDragAnimation( @@ -2432,17 +2413,10 @@ private fun ReadMenuLiquidSlider( pressedScale = 1.5f, onDragStarted = {}, onDragStopped = { - if (didDrag) { - onValueChange(targetValue) - onValueCommit?.invoke(targetValue) - } else { - onValueChangeFinished?.invoke() - } + onValueChange(targetValue) + onValueCommit?.invoke(targetValue) ?: onValueChangeFinished?.invoke() }, onDrag = { _, dragAmount -> - if (!didDrag) { - didDrag = dragAmount.x != 0f - } val delta = range * (dragAmount.x / trackWidth) val nextValue = if (isLtr) { (targetValue + delta).coerceIn(valueRange) diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookScreen.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookScreen.kt index 46145652f..0478b4fe6 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookScreen.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookScreen.kt @@ -39,6 +39,7 @@ import io.legado.app.ui.book.read.sheet.UnderlineConfigSheet import io.legado.app.ui.widget.components.FontFolderState import io.legado.app.ui.widget.components.FontSelectSheet import io.legado.app.ui.widget.components.alert.AppAlertDialog +import io.legado.app.ui.widget.components.bookmark.BookmarkEditSheet import io.legado.app.ui.widget.components.changeSource.ChangeSourceSheet import io.legado.app.ui.widget.components.log.AppLogSheet import io.legado.app.ui.config.readConfig.TextSelectMenuFilterSheet @@ -327,6 +328,16 @@ fun ReadBookScreen( sourceOrigin = photoSheet?.sourceOrigin, onDismissRequest = dismissSheet, ) + val bookmarkSheet = state.activeSheet as? ReadBookSheet.Bookmark + bookmarkSheet?.let { sheet -> + BookmarkEditSheet( + show = true, + bookmark = sheet.bookmark, + onDismiss = dismissSheet, + onSave = { onIntent(ReadBookIntent.SaveBookmark(it)) }, + onDelete = { onIntent(ReadBookIntent.DeleteBookmark(it)) }, + ) + } // AlertDialog-based sheets and special cases — conditionally composed when (state.activeSheet) { @@ -382,9 +393,7 @@ fun ReadBookScreen( ) } - is ReadBookSheet.Bookmark -> { - // Handled by ViewModel — redirects to menu route - } + is ReadBookSheet.Bookmark -> Unit is ReadBookSheet.InfoConfig -> { // Integrated into ReadStyleSheet's HeaderFooterPage diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt index 499b32028..e6de1aa48 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt @@ -380,10 +380,7 @@ class ReadBookViewModel( } is ReadBookIntent.ShowSheet -> { - if (intent.sheet is ReadBookSheet.Bookmark) { - // Bookmark is shown as a menu route, not a sheet - openReadMenuRoute(ReadBookMenuRoute.Bookmark(intent.sheet.bookmark)) - } else if (intent.sheet is ReadBookSheet.HighlightRuleConfig) { + if (intent.sheet is ReadBookSheet.HighlightRuleConfig) { loadHighlightRules() _uiState.update { it.copy(activeSheet = intent.sheet) } } else { @@ -1076,13 +1073,8 @@ class ReadBookViewModel( is ReadBookIntent.TextActionBookmark -> { _uiState.update { it.copy( - menuState = ReadBookMenuState( - visible = true, - routeStack = kotlinx.collections.immutable.persistentListOf( - ReadBookMenuRoute.Main, - ReadBookMenuRoute.Bookmark(intent.bookmark), - ), - ), + menuState = ReadBookMenuState(), + activeSheet = ReadBookSheet.Bookmark(intent.bookmark), ) } } @@ -1483,7 +1475,12 @@ class ReadBookViewModel( content = "", ) withContext(Main) { - openReadMenuRoute(ReadBookMenuRoute.Bookmark(bookmark)) + _uiState.update { + it.copy( + menuState = ReadBookMenuState(), + activeSheet = ReadBookSheet.Bookmark(bookmark), + ) + } } } }