// @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;