import * as React from 'react'; import { Flex, Button, Text } from '@aws-amplify/ui-react'; import { getLandscapeMediaQuery } from '../utils/device'; import { LivenessClassNames } from '../types/classNames'; interface LandscapeErrorModalProps { onRetry: () => void; header: string; portraitMessage: string; landscapeMessage: string; tryAgainText: string; } export const LandscapeErrorModal: React.FC = ( props ) => { const { onRetry, header, portraitMessage, landscapeMessage, tryAgainText } = props; const [isLandscape, setIsLandscape] = React.useState( true ); React.useLayoutEffect(() => { // Get orientation: landscape media query const landscapeMediaQuery = getLandscapeMediaQuery(); // Set ui state for initial orientation setIsLandscape(landscapeMediaQuery.matches); // Listen for future orientation changes landscapeMediaQuery.addEventListener('change', (e) => { setIsLandscape(e.matches); }); // Remove matchMedia event listener return () => { landscapeMediaQuery.removeEventListener('change', (e) => setIsLandscape(e.matches) ); }; }, []); return ( {header} {isLandscape ? landscapeMessage : portraitMessage} {!isLandscape ? ( ) : null} ); };