import Controls from 'Components/Controls' import Conversation, { ConversationProps } from 'Components/conversation/Conversation' import SeeAnswersButton from 'Components/conversation/SeeAnswersButton' import PageFeedback from 'Components/Feedback/PageFeedback' import SearchButton from 'Components/SearchButton' import TargetSelection from 'Components/TargetSelection' import React, { useEffect } from 'react' import { Trans } from 'react-i18next' import { useSelector, useDispatch } from 'react-redux' import { firstStepCompletedSelector } from 'Selectors/simulationSelectors' import { useSimulationProgress } from 'Components/utils/useNextQuestion' import * as Animate from 'Ui/animate' import Progress from 'Ui/Progress' import { setSimulationConfig } from 'Actions/actions' import { useLocation } from 'react-router' import { SimulationConfig } from 'Reducers/rootReducer' type SimulationProps = { config: SimulationConfig explanations?: React.ReactNode results?: React.ReactNode customEndMessages?: ConversationProps['customEndMessages'] showPeriodSwitch?: boolean } export default function Simulation({ config, explanations, results, customEndMessages, showPeriodSwitch }: SimulationProps) { const dispatch = useDispatch() const location = useLocation<{ fromGérer?: boolean }>() useEffect(() => { dispatch(setSimulationConfig(config, location.state?.fromGérer)) }, [config]) const firstStepCompleted = useSelector(firstStepCompletedSelector) const progress = useSimulationProgress() return ( <> {firstStepCompleted && ( <> {results} {progress < 1 ? ( Affinez la simulation en répondant aux questions : ) : ( )} {progress < 1 && ( )} Êtes-vous satisfait de ce simulateur ? } customEventName="rate simulator" />{' '} {explanations} > )} > ) }