UNPKG

@100mslive/react-native-room-kit

Version:

100ms Room Kit provides simple & easy to use UI components to build Live Streaming & Video Conferencing experiences in your apps.

38 lines (37 loc) 1.57 kB
import React, { memo } from 'react'; import { Provider } from 'react-redux'; import { Platform } from 'react-native'; import { SafeAreaInsetsContext, SafeAreaProvider } from 'react-native-safe-area-context'; import { store } from './redux/index'; import { HMSContainer } from './HMSContainer'; import { useSavePropsToStore } from './hooks-util'; const _HMSPrebuilt = props => { if (!props.token && !props.roomCode) { throw new Error('`token` or `roomCode` is required to join a HMS Room'); } useSavePropsToStore(props, store.dispatch); // @ts-ignore Not using `useContext` hook because we don't want to subscribe to updates // We just want to check if SafeAreaProvider exists or not const safeAreaProviderExists = !!SafeAreaInsetsContext.Consumer._currentValue; const content = /*#__PURE__*/React.createElement(Provider, { store: store }, /*#__PURE__*/React.createElement(HMSContainer, null)); if (safeAreaProviderExists) { return content; } return /*#__PURE__*/React.createElement(SafeAreaProvider, null, content); }; const arePropsEqual = (prevProps, nextProps) => { if (Platform.OS === 'android' && !Object.is(prevProps.handleBackButton, nextProps.handleBackButton)) { return false; } if (Platform.OS === 'android' && !Object.is(prevProps.autoEnterPipMode, nextProps.autoEnterPipMode)) { return false; } if (!Object.is(prevProps.onLeave, nextProps.onLeave)) { return false; } return true; }; export const HMSPrebuilt = /*#__PURE__*/memo(_HMSPrebuilt, arePropsEqual); //# sourceMappingURL=HMSPrebuilt.js.map