Răsfoiți Sursa

ChapterNavigator: Fix haptic feedback (#9458)

Ivan Iskandar 1 an în urmă
părinte
comite
fce9cb820c

+ 13 - 1
app/src/main/java/eu/kanade/presentation/reader/ChapterNavigator.kt

@@ -1,6 +1,8 @@
 package eu.kanade.presentation.reader
 
 import androidx.compose.foundation.background
+import androidx.compose.foundation.interaction.MutableInteractionSource
+import androidx.compose.foundation.interaction.collectIsDraggedAsState
 import androidx.compose.foundation.isSystemInDarkTheme
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.Spacer
@@ -19,6 +21,9 @@ import androidx.compose.material3.Text
 import androidx.compose.material3.surfaceColorAtElevation
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.CompositionLocalProvider
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.remember
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.draw.clip
@@ -87,6 +92,13 @@ fun ChapterNavigator(
                     ) {
                         Text(text = currentPage.toString())
 
+                        val interactionSource = remember { MutableInteractionSource() }
+                        val sliderDragged by interactionSource.collectIsDraggedAsState()
+                        LaunchedEffect(currentPage) {
+                            if (sliderDragged) {
+                                haptic.performHapticFeedback(HapticFeedbackType.TextHandleMove)
+                            }
+                        }
                         Slider(
                             modifier = Modifier
                                 .weight(1f)
@@ -96,8 +108,8 @@ fun ChapterNavigator(
                             steps = totalPages,
                             onValueChange = {
                                 onSliderValueChange(it.toInt() - 1)
-                                haptic.performHapticFeedback(HapticFeedbackType.TextHandleMove)
                             },
+                            interactionSource = interactionSource,
                         )
 
                         Text(text = totalPages.toString())