From d7c4ceaaa92fdde8a72dab487540472953104567 Mon Sep 17 00:00:00 2001 From: kosenda Date: Mon, 13 Jan 2025 13:27:53 +0900 Subject: [PATCH 1/3] feature: add ConfirmHapticFeedback in IconButton --- .../core/designsystem/component/IconButton.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/core/designsystem/src/main/kotlin/com/google/samples/apps/nowinandroid/core/designsystem/component/IconButton.kt b/core/designsystem/src/main/kotlin/com/google/samples/apps/nowinandroid/core/designsystem/component/IconButton.kt index 43ec11f0b..5034a30d5 100644 --- a/core/designsystem/src/main/kotlin/com/google/samples/apps/nowinandroid/core/designsystem/component/IconButton.kt +++ b/core/designsystem/src/main/kotlin/com/google/samples/apps/nowinandroid/core/designsystem/component/IconButton.kt @@ -24,6 +24,8 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.hapticfeedback.HapticFeedbackType +import androidx.compose.ui.platform.LocalHapticFeedback import com.google.samples.apps.nowinandroid.core.designsystem.icon.NiaIcons import com.google.samples.apps.nowinandroid.core.designsystem.theme.NiaTheme @@ -48,11 +50,15 @@ fun NiaIconToggleButton( icon: @Composable () -> Unit, checkedIcon: @Composable () -> Unit = icon, ) { + val haptics = LocalHapticFeedback.current // TODO: File bug // Can't use regular IconToggleButton as it doesn't include a shape (appears square) FilledIconToggleButton( checked = checked, - onCheckedChange = onCheckedChange, + onCheckedChange = { isChecked -> + onCheckedChange(isChecked) + if (isChecked) haptics.performHapticFeedback(HapticFeedbackType.Confirm) + }, modifier = modifier, enabled = enabled, colors = IconButtonDefaults.iconToggleButtonColors( From ff6fde61fc234dfb2e11942868773743d8a65121 Mon Sep 17 00:00:00 2001 From: kosenda Date: Mon, 13 Jan 2025 20:50:26 +0900 Subject: [PATCH 2/3] fix: change of call sequence --- .../apps/nowinandroid/core/designsystem/component/IconButton.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/designsystem/src/main/kotlin/com/google/samples/apps/nowinandroid/core/designsystem/component/IconButton.kt b/core/designsystem/src/main/kotlin/com/google/samples/apps/nowinandroid/core/designsystem/component/IconButton.kt index 5034a30d5..201a73bf7 100644 --- a/core/designsystem/src/main/kotlin/com/google/samples/apps/nowinandroid/core/designsystem/component/IconButton.kt +++ b/core/designsystem/src/main/kotlin/com/google/samples/apps/nowinandroid/core/designsystem/component/IconButton.kt @@ -56,8 +56,8 @@ fun NiaIconToggleButton( FilledIconToggleButton( checked = checked, onCheckedChange = { isChecked -> - onCheckedChange(isChecked) if (isChecked) haptics.performHapticFeedback(HapticFeedbackType.Confirm) + onCheckedChange(isChecked) }, modifier = modifier, enabled = enabled, From ab93c297f2892f3353bc7ba97e2c144f02286d13 Mon Sep 17 00:00:00 2001 From: kosenda Date: Sat, 25 Jan 2025 17:44:30 +0900 Subject: [PATCH 3/3] feature: use set permission and toggles --- .../nowinandroid/core/designsystem/component/IconButton.kt | 4 +++- core/ui/src/main/AndroidManifest.xml | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/core/designsystem/src/main/kotlin/com/google/samples/apps/nowinandroid/core/designsystem/component/IconButton.kt b/core/designsystem/src/main/kotlin/com/google/samples/apps/nowinandroid/core/designsystem/component/IconButton.kt index 201a73bf7..9b5e5c049 100644 --- a/core/designsystem/src/main/kotlin/com/google/samples/apps/nowinandroid/core/designsystem/component/IconButton.kt +++ b/core/designsystem/src/main/kotlin/com/google/samples/apps/nowinandroid/core/designsystem/component/IconButton.kt @@ -56,7 +56,9 @@ fun NiaIconToggleButton( FilledIconToggleButton( checked = checked, onCheckedChange = { isChecked -> - if (isChecked) haptics.performHapticFeedback(HapticFeedbackType.Confirm) + haptics.performHapticFeedback( + if (isChecked) HapticFeedbackType.ToggleOn else HapticFeedbackType.ToggleOff + ) onCheckedChange(isChecked) }, modifier = modifier, diff --git a/core/ui/src/main/AndroidManifest.xml b/core/ui/src/main/AndroidManifest.xml index 51d0cfc2e..f3d5b0e63 100644 --- a/core/ui/src/main/AndroidManifest.xml +++ b/core/ui/src/main/AndroidManifest.xml @@ -14,4 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. --> - \ No newline at end of file + + + \ No newline at end of file