UNPKG

react-native-turbo-haptics

Version:
64 lines (54 loc) 1.68 kB
import { NativeModules } from 'react-native'; import TurboHapticsModule from './NativeTurboHaptics'; declare global { var __turboModuleProxy: unknown | undefined; function nativeCallSyncHook(): unknown; function createHapticFeedback(): { trigger: (type: import('./index').HapticType) => void; }; } const noop = () => { 'worklet'; return; }; export const initTurboHaptics = () => { // Check if already initialized if (global.createHapticFeedback == null) { try { let success = false; const module = NativeModules.TurboHaptics; // [Pre-0.74] Check for JSI environment and install bindings if (global.nativeCallSyncHook != null && module?.install) { success = module.install(); } // [RN 0.74+] Check for JSI environment and install bindings else if ( global.__turboModuleProxy != null && TurboHapticsModule !== null ) { try { success = TurboHapticsModule.install(); } catch (e) { console.warn('TurboHaptics: TurboModule not available:', e); } } if (!success) { console.warn('TurboHaptics: Failed to initialize'); return null; } if (global.createHapticFeedback == null) { console.warn('TurboHaptics: Failed to create haptic feedback'); return null; } } catch (e) { console.warn('TurboHaptics: Initialization failed:', e); return null; } } return global.createHapticFeedback ? global.createHapticFeedback() : null; }; // Initialize module const haptics = initTurboHaptics() || { trigger: noop, }; export const internalTrigger = haptics.trigger;