// @flow import { useNavigation } from "@react-navigation/native"; import { Text, View } from "components/styledComponents"; import { t } from "i18next"; import { ObsEditContext } from "providers/contexts"; import * as React from "react"; import { IconButton, useTheme } from "react-native-paper"; type Props = { closeModal: ( ) => void } const AddObsModal = ( { closeModal }: Props ): React.Node => { const theme = useTheme( ); // Destructuring obsEdit means that we don't have to wrap every Jest test in ObsEditProvider const obsEditContext = React.useContext( ObsEditContext ); const createObservationNoEvidence = obsEditContext?.createObservationNoEvidence; const navigation = useNavigation( ); const navAndCloseModal = ( screen, params ) => { const resetObsEditContext = obsEditContext?.resetObsEditContext; // clear previous upload context before navigating if ( resetObsEditContext ) { resetObsEditContext( ); } if ( screen === "ObsEdit" ) { createObservationNoEvidence( ); } // access nested screen navigation.navigate( screen, params ); closeModal( ); }; const navToPhotoGallery = ( ) => navAndCloseModal( "PhotoGallery" ); const navToSoundRecorder = ( ) => navAndCloseModal( "SoundRecorder" ); const navToStandardCamera = ( ) => navAndCloseModal( "StandardCamera" ); const navToObsEdit = ( ) => navAndCloseModal( "ObsEdit" ); const bulletedText = [ t( "Take-a-photo-with-your-camera" ), t( "Upload-a-photo-from-your-gallery" ), t( "Record-a-sound" ) ]; const renderIconButton = ( icon, className, onPress, accessibilityLabel, testID ) => ( ); return ( {t( "Evidence" )} {t( "Add-evidence-of-an-organism" )} {t( "You-can" )} {bulletedText.map( string => ( {`\u2022 ${string}`} ) )} {renderIconButton( "camera", "mx-5", navToStandardCamera, t( "Navigate-to-camera" ), "camera-button" )} {renderIconButton( "icon-gallery", "mx-5", navToPhotoGallery, t( "Navigate-to-photo-importer" ), "import-media-button" )} {renderIconButton( "pen-and-paper", "mx-2", navToObsEdit, t( "Navigate-to-observation-edit-screen" ), "observe-without-evidence-button" )} {renderIconButton( "close-button-x", "self-center h-24 w-24 rounded-[99px]", ( ) => closeModal( ), t( "Close-camera-options-modal" ), "close-camera-options-button" )} {renderIconButton( "microphone", "mx-2", navToSoundRecorder, t( "Navigate-to-sound-recorder" ), "record-sound-button" )} ); }; export default AddObsModal;