diff options
Diffstat (limited to 'src/lib/haptics.ts')
-rw-r--r-- | src/lib/haptics.ts | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/lib/haptics.ts b/src/lib/haptics.ts new file mode 100644 index 000000000..516940c1c --- /dev/null +++ b/src/lib/haptics.ts @@ -0,0 +1,40 @@ +import {isIOS, isWeb} from 'platform/detection' +import ReactNativeHapticFeedback, { + HapticFeedbackTypes, +} from 'react-native-haptic-feedback' + +const hapticImpact: HapticFeedbackTypes = isIOS ? 'impactMedium' : 'impactLight' // Users said the medium impact was too strong on Android; see APP-537s + +export class Haptics { + static default() { + if (isWeb) { + return + } + ReactNativeHapticFeedback.trigger(hapticImpact) + } + static impact(type: HapticFeedbackTypes = hapticImpact) { + if (isWeb) { + return + } + ReactNativeHapticFeedback.trigger(type) + } + static selection() { + if (isWeb) { + return + } + ReactNativeHapticFeedback.trigger('selection') + } + static notification = (type: 'success' | 'warning' | 'error') => { + if (isWeb) { + return + } + switch (type) { + case 'success': + return ReactNativeHapticFeedback.trigger('notificationSuccess') + case 'warning': + return ReactNativeHapticFeedback.trigger('notificationWarning') + case 'error': + return ReactNativeHapticFeedback.trigger('notificationError') + } + } +} |