@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
JavaScript
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