UNPKG

@s20.ai/safecam-360-rn

Version:

A React Native component to view the interior panorama and exterior 360 degree views of a product featuring suppport for hotspots. Compatible with Android and iOS

76 lines (63 loc) 1.97 kB
import ReactNativeHapticFeedback from 'react-native-haptic-feedback'; import {Immersive} from 'react-native-immersive'; import {Platform, Dimensions} from 'react-native'; import {useEffect, useState} from 'react'; import DeviceInfo from 'react-native-device-info'; import constants from '../config/constants'; export const triggerHapticFeedback = () => { const options = { enableVibrateFallback: true, ignoreAndroidSystemSettings: true, }; ReactNativeHapticFeedback.trigger('impactLight', options); }; export const setImmersive = mode => { if (Platform.OS === 'android') { if (mode) { Immersive.on(); } else { Immersive.off(); } Immersive.setImmersive(mode); } else { console.log('Immersive mode unsupported on iOS'); } }; //* hook for orientation change // export const useOrientation = () => { // const [orientation, setOrientation] = useState(null); // useEffect(() => { // const subscription = Dimensions.addEventListener('change', ({window}) => { // setOrientation(window.width < window.height ? 'landscape' : 'portrait'); // }); // return () => subscription?.remove(); // }); // return orientation; // }; export const useScreenDimensions = () => { const [screenDimensions, setScreenDimensions] = useState({ width: Dimensions.get("screen").width, height: Dimensions.get("screen").height }) useEffect(() => { const subscription = Dimensions.addEventListener('change', ({screen}) => { setScreenDimensions({ width: Dimensions.get("screen").width, height: Dimensions.get("screen").height }) }); return () => subscription?.remove(); }); return screenDimensions; }; export const hasNotch = () => { return DeviceInfo.hasNotch() } export const getOrientation = () => { if(Dimensions.get("screen").width > Dimensions.get("screen").height){ return constants.LANDSCAPE } else{ return constants.PORTRAIT } }