diff --git a/core/ui/src/main/java/com/tangem/core/ui/haptic/DefaultHapticManager.kt b/core/ui/src/main/java/com/tangem/core/ui/haptic/DefaultHapticManager.kt index 5a34d92702..5e5ec69b89 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/haptic/DefaultHapticManager.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/haptic/DefaultHapticManager.kt @@ -10,11 +10,7 @@ internal class DefaultHapticManager( override fun perform(effect: TangemHapticEffect) { when (effect) { - is TangemHapticEffect.View -> { - effect.androidHapticFeedbackCode?.let { - ViewCompat.performHapticFeedback(view, it) - } - } + is TangemHapticEffect.View -> performViewEffect(effect) is TangemHapticEffect.OneTime -> { if (vibratorHapticManager != null) { vibratorHapticManager.performOneTime(effect) @@ -29,4 +25,20 @@ internal class DefaultHapticManager( } } } + + private fun performViewEffect(effect: TangemHapticEffect.View) { + val code = effect.androidHapticFeedbackCode ?: return + if (ViewCompat.performHapticFeedback(view, code)) return + + val fallbackCode = VIEW_FALLBACKS[effect]?.androidHapticFeedbackCode ?: return + ViewCompat.performHapticFeedback(view, fallbackCode) + } + + private companion object { + val VIEW_FALLBACKS = mapOf( + TangemHapticEffect.View.ClockTick to TangemHapticEffect.View.KeyboardPress, + TangemHapticEffect.View.Confirm to TangemHapticEffect.View.ContextClick, + TangemHapticEffect.View.Reject to TangemHapticEffect.View.LongPress, + ) + } } \ No newline at end of file