about summary refs log tree commit diff
path: root/src/lib/haptics.ts
blob: 23a32179657bf83b227e3e13b07ab1a363b277c1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import { isIOS } 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 = () => ReactNativeHapticFeedback.trigger(hapticImpact)
  static impact = (type: HapticFeedbackTypes = hapticImpact) => ReactNativeHapticFeedback.trigger(type)
  static selection = () => ReactNativeHapticFeedback.trigger('selection')
  static notification = (type: 'success' | 'warning' | 'error') => {
    switch (type) {
      case 'success':
        return ReactNativeHapticFeedback.trigger('notificationSuccess')
      case 'warning':
        return ReactNativeHapticFeedback.trigger('notificationWarning')
      case 'error':
        return ReactNativeHapticFeedback.trigger('notificationError')
    }
  }
}