Browse Source

Perform haptic feedback where appropriate (#8378)

zbue 2 years ago
parent
commit
38c6702b8f

+ 8 - 1
app/src/main/java/eu/kanade/presentation/components/ChapterDownloadIndicator.kt

@@ -26,6 +26,8 @@ import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.composed
 import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.hapticfeedback.HapticFeedbackType
+import androidx.compose.ui.platform.LocalHapticFeedback
 import androidx.compose.ui.res.painterResource
 import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.semantics.Role
@@ -239,9 +241,14 @@ private fun Modifier.commonClickable(
     onLongClick: () -> Unit,
     onClick: () -> Unit,
 ) = composed {
+    val haptic = LocalHapticFeedback.current
+
     this.combinedClickable(
         enabled = enabled,
-        onLongClick = onLongClick,
+        onLongClick = {
+            onLongClick()
+            haptic.performHapticFeedback(HapticFeedbackType.LongPress)
+        },
         onClick = onClick,
         role = Role.Button,
         interactionSource = remember { MutableInteractionSource() },

+ 8 - 1
app/src/main/java/eu/kanade/presentation/library/LibraryScreen.kt

@@ -6,6 +6,8 @@ import androidx.compose.material.icons.outlined.HelpOutline
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.getValue
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.hapticfeedback.HapticFeedbackType
+import androidx.compose.ui.platform.LocalHapticFeedback
 import androidx.compose.ui.platform.LocalUriHandler
 import androidx.compose.ui.util.fastAll
 import eu.kanade.domain.category.model.Category
@@ -40,6 +42,8 @@ fun LibraryScreen(
     onClickRefresh: (Category?) -> Boolean,
     onClickOpenRandomManga: () -> Unit,
 ) {
+    val haptic = LocalHapticFeedback.current
+
     Scaffold(
         topBar = { scrollBehavior ->
             val title by presenter.getToolbarTitle()
@@ -101,7 +105,10 @@ fun LibraryScreen(
             onChangeCurrentPage = { presenter.activeCategory = it },
             onMangaClicked = onMangaClicked,
             onToggleSelection = { presenter.toggleSelection(it) },
-            onToggleRangeSelection = { presenter.toggleRangeSelection(it) },
+            onToggleRangeSelection = {
+                presenter.toggleRangeSelection(it)
+                haptic.performHapticFeedback(HapticFeedbackType.LongPress)
+            },
             onRefresh = onClickRefresh,
             onGlobalSearchClicked = onGlobalSearchClicked,
             getNumberOfMangaForCategory = { presenter.getMangaCountForCategory(it) },