import React, { useEffect, useState } from 'react'; import PropTypes from 'prop-types'; import Modal from 'react-native-modal'; import useDeepCompareEffect from 'use-deep-compare-effect'; import isEmpty from 'lodash/isEmpty'; import Orientation from 'react-native-orientation-locker'; import { withTheme } from '../theme'; import EventEmitter from '../utils/events'; import { LOCAL_AUTHENTICATE_EMITTER } from '../constants/localAuthentication'; import { isTablet } from '../utils/deviceInfo'; import { PasscodeEnter } from '../containers/Passcode'; const ScreenLockedView = ({ theme }) => { const [visible, setVisible] = useState(false); const [data, setData] = useState({}); useDeepCompareEffect(() => { if (!isEmpty(data)) { setVisible(true); } else { setVisible(false); } }, [data]); const showScreenLock = args => { setData(args); }; useEffect(() => { if (!isTablet) { Orientation.lockToPortrait(); } const listener = EventEmitter.addEventListener(LOCAL_AUTHENTICATE_EMITTER, showScreenLock); return () => { if (!isTablet) { Orientation.unlockAllOrientations(); } EventEmitter.removeListener(LOCAL_AUTHENTICATE_EMITTER, listener); }; }, []); const onSubmit = () => { const { submit } = data; if (submit) { submit(); } setData({}); }; return ( ); }; ScreenLockedView.propTypes = { theme: PropTypes.string }; export default withTheme(ScreenLockedView);