diff --git a/.vscode/settings.json b/.vscode/settings.json index b3f02083321ce59814f15b98a5ef2b92aa387f21..2da2aa9b38ccba113bc1e6f64842a11622e67822 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -138,7 +138,6 @@ "PROFILETYPE", "pseudonymisées", "reduxjs", - "Reinit", "sendmail", "SHARAPOWATT", "shortcodes", diff --git a/src/components/Ecogesture/EcogestureEmptyList/EcogestureEmptyList.spec.tsx b/src/components/Ecogesture/EcogestureEmptyList/EcogestureEmptyList.spec.tsx index 8c7af8fa436ff6f007d0c6531447e7591056a068..bb80e51c277159a6a86b66b005e075cc0867f08a 100644 --- a/src/components/Ecogesture/EcogestureEmptyList/EcogestureEmptyList.spec.tsx +++ b/src/components/Ecogesture/EcogestureEmptyList/EcogestureEmptyList.spec.tsx @@ -17,7 +17,7 @@ describe('EcogestureEmptyList component', () => { setTab={mockChangeTab} isObjective={true} isSelectionDone={false} - handleReinitClick={jest.fn()} + openResetEcogestureModal={jest.fn()} /> ) expect(container).toMatchSnapshot() @@ -28,7 +28,7 @@ describe('EcogestureEmptyList component', () => { setTab={mockChangeTab} isObjective={false} isSelectionDone={true} - handleReinitClick={jest.fn()} + openResetEcogestureModal={jest.fn()} /> ) await act(async () => { @@ -42,7 +42,7 @@ describe('EcogestureEmptyList component', () => { setTab={mockChangeTab} isObjective={false} isSelectionDone={false} - handleReinitClick={jest.fn()} + openResetEcogestureModal={jest.fn()} /> ) await act(async () => { @@ -56,7 +56,7 @@ describe('EcogestureEmptyList component', () => { setTab={mockChangeTab} isObjective={false} isSelectionDone={true} - handleReinitClick={jest.fn()} + openResetEcogestureModal={jest.fn()} /> ) expect( @@ -69,7 +69,7 @@ describe('EcogestureEmptyList component', () => { setTab={mockChangeTab} isObjective={true} isSelectionDone={true} - handleReinitClick={jest.fn()} + openResetEcogestureModal={jest.fn()} /> ) expect( diff --git a/src/components/Ecogesture/EcogestureEmptyList/EcogestureEmptyList.tsx b/src/components/Ecogesture/EcogestureEmptyList/EcogestureEmptyList.tsx index b51c6f032edcc8c9b68cbd4b0fe82ea13d842e18..67fded06ba6c642247edc1f04b8a7696258674c3 100644 --- a/src/components/Ecogesture/EcogestureEmptyList/EcogestureEmptyList.tsx +++ b/src/components/Ecogesture/EcogestureEmptyList/EcogestureEmptyList.tsx @@ -11,13 +11,13 @@ interface EcogestureEmptyListProps { setTab: React.Dispatch<React.SetStateAction<number>> isObjective: boolean isSelectionDone: boolean - handleReinitClick: () => void + openResetEcogestureModal: () => void } const EcogestureEmptyList = ({ setTab, isObjective, isSelectionDone, - handleReinitClick, + openResetEcogestureModal, }: EcogestureEmptyListProps) => { const { t } = useI18n() const navigate = useNavigate() @@ -48,11 +48,11 @@ const EcogestureEmptyList = ({ {isSelectionDone && ( <Button - aria-label={t('ecogesture.reinit')} - onClick={handleReinitClick} + aria-label={t('ecogesture.reset')} + onClick={openResetEcogestureModal} className="btnSecondary" > - {t('ecogesture.reinit')} + {t('ecogesture.reset')} </Button> )} diff --git a/src/components/Ecogesture/EcogestureInitModal/EcogestureInitModal.spec.tsx b/src/components/Ecogesture/EcogestureInitModal/EcogestureInitModal.spec.tsx index f42e399cf57084624bb061cff2dc17dae592fb1e..bd3c32ab029aa398f52dfd14ca47ef66466d871e 100644 --- a/src/components/Ecogesture/EcogestureInitModal/EcogestureInitModal.spec.tsx +++ b/src/components/Ecogesture/EcogestureInitModal/EcogestureInitModal.spec.tsx @@ -1,45 +1,54 @@ import { act, render, screen } from '@testing-library/react' import { userEvent } from '@testing-library/user-event' import React from 'react' +import { Provider } from 'react-redux' +import * as storeHooks from 'store/hooks' +import { createMockEcolyoStore } from 'tests/__mocks__/store' import EcogestureInitModal from './EcogestureInitModal' -const mockHandleClose = jest.fn() -const mockHandleLaunchForm = jest.fn() +const mockAppDispatch = jest.spyOn(storeHooks, 'useAppDispatch') + +const mockedNavigate = jest.fn() +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useNavigate: () => mockedNavigate, +})) + describe('EcogestureInitModal component', () => { + const store = createMockEcolyoStore() + + beforeEach(() => { + jest.clearAllMocks() + }) it('should be rendered correctly', () => { const { baseElement } = render( - <EcogestureInitModal - open={true} - handleCloseClick={mockHandleClose} - handleLaunchForm={mockHandleLaunchForm} - /> + <Provider store={store}> + <EcogestureInitModal /> + </Provider> ) expect(baseElement).toMatchSnapshot() }) it('should close modal', async () => { render( - <EcogestureInitModal - open={true} - handleCloseClick={mockHandleClose} - handleLaunchForm={mockHandleLaunchForm} - /> + <Provider store={store}> + <EcogestureInitModal /> + </Provider> ) await act(async () => { await userEvent.click(screen.getByText('ecogesture.initModal.btn1')) }) - expect(mockHandleClose).toHaveBeenCalledTimes(1) + expect(mockAppDispatch).toHaveBeenCalledTimes(1) }) it('should close modal and launch form', async () => { render( - <EcogestureInitModal - open={true} - handleCloseClick={mockHandleClose} - handleLaunchForm={mockHandleLaunchForm} - /> + <Provider store={store}> + <EcogestureInitModal /> + </Provider> ) await act(async () => { await userEvent.click(screen.getByText('ecogesture.initModal.btn2')) }) - expect(mockHandleLaunchForm).toHaveBeenCalledTimes(1) + expect(mockedNavigate).toHaveBeenCalledWith('/ecogesture-form?modal=false') + expect(mockAppDispatch).toHaveBeenCalledTimes(1) }) }) diff --git a/src/components/Ecogesture/EcogestureInitModal/EcogestureInitModal.tsx b/src/components/Ecogesture/EcogestureInitModal/EcogestureInitModal.tsx index 4575d4809619dfd37401dbcb0342ce84baa10c47..c62517b095dbc4323fcf56e47ac52ca1acdbf5cf 100644 --- a/src/components/Ecogesture/EcogestureInitModal/EcogestureInitModal.tsx +++ b/src/components/Ecogesture/EcogestureInitModal/EcogestureInitModal.tsx @@ -4,24 +4,33 @@ import CloseIcon from 'assets/icons/ico/close.svg' import { useI18n } from 'cozy-ui/transpiled/react/I18n' import Icon from 'cozy-ui/transpiled/react/Icon' import React from 'react' +import { useNavigate } from 'react-router-dom' +import { useAppDispatch, useAppSelector } from 'store/hooks' +import { updateProfile } from 'store/profile/profile.slice' import './ecogestureInitModal.scss' -interface EcogestureInitModalProps { - open: boolean - handleCloseClick: () => void - handleLaunchForm: () => void -} - -const EcogestureInitModal = ({ - open, - handleCloseClick, - handleLaunchForm, -}: EcogestureInitModalProps) => { +const EcogestureInitModal = () => { const { t } = useI18n() + const navigate = useNavigate() + const dispatch = useAppDispatch() + const { haveSeenEcogestureModal } = useAppSelector( + state => state.ecolyo.profile + ) + const openEcogestureInitModal = !haveSeenEcogestureModal + + const handleLaunchForm = () => { + dispatch(updateProfile({ haveSeenEcogestureModal: true })) + navigate('/ecogesture-form?modal=false') + } + + const handleCloseEcogestureInitModal = () => { + dispatch(updateProfile({ haveSeenEcogestureModal: true })) + } + return ( <Dialog - open={open} - onClose={handleCloseClick} + open={openEcogestureInitModal} + onClose={handleCloseEcogestureInitModal} aria-labelledby="accessibility-title" classes={{ root: 'modal-root', @@ -34,7 +43,7 @@ const EcogestureInitModal = ({ <IconButton aria-label={t('feedback.accessibility.button_close')} className="modal-paper-close-button" - onClick={handleCloseClick} + onClick={handleCloseEcogestureInitModal} > <Icon icon={CloseIcon} size={16} /> </IconButton> @@ -54,7 +63,7 @@ const EcogestureInitModal = ({ </Button> <Button aria-label={t('ecogesture.initModal.btn1')} - onClick={handleCloseClick} + onClick={handleCloseEcogestureInitModal} className="btnSecondary" > {t('ecogesture.initModal.btn1')} diff --git a/src/components/Ecogesture/EcogestureList/EcogestureList.spec.tsx b/src/components/Ecogesture/EcogestureList/EcogestureList.spec.tsx index bff4393a53fdfed61b124c92955352205e7fd2a0..d512de1a43de39e438432c03f18509d0537eca23 100644 --- a/src/components/Ecogesture/EcogestureList/EcogestureList.spec.tsx +++ b/src/components/Ecogesture/EcogestureList/EcogestureList.spec.tsx @@ -19,7 +19,6 @@ jest.mock( () => 'mock-ecogesturecard' ) -const mockHandleReinit = jest.fn() const updateEcogestureFilter = jest.fn() const mockAppDispatch = jest.spyOn(storeHooks, 'useAppDispatch') mockAppDispatch.mockImplementation(() => updateEcogestureFilter) @@ -39,7 +38,7 @@ describe('EcogesturesList component', () => { displaySelection={false} selectionTotal={0} selectionViewed={0} - handleReinitClick={mockHandleReinit} + openResetEcogestureModal={jest.fn()} /> </BrowserRouter> </Provider> diff --git a/src/components/Ecogesture/EcogestureList/EcogestureList.tsx b/src/components/Ecogesture/EcogestureList/EcogestureList.tsx index 35377c4fcb7bca2ef861c29dc220be1ff38a0c65..f46cc200bf12ef74854a11159f96e73e8fe3f608 100644 --- a/src/components/Ecogesture/EcogestureList/EcogestureList.tsx +++ b/src/components/Ecogesture/EcogestureList/EcogestureList.tsx @@ -18,7 +18,7 @@ interface EcogestureListProps { displaySelection: boolean selectionTotal: number selectionViewed: number - handleReinitClick?: () => void + openResetEcogestureModal?: () => void } const EcogestureList = ({ @@ -26,7 +26,7 @@ const EcogestureList = ({ displaySelection, selectionTotal, selectionViewed, - handleReinitClick, + openResetEcogestureModal, }: EcogestureListProps) => { const { t } = useI18n() const navigate = useNavigate() @@ -155,9 +155,9 @@ const EcogestureList = ({ <div className="ecogesture-content"> {renderEcogestureContent()} - {!displaySelection && handleReinitClick && ( - <Button onClick={handleReinitClick} className="btnSecondary"> - {t('ecogesture.reinit')} + {!displaySelection && openResetEcogestureModal && ( + <Button onClick={openResetEcogestureModal} className="btnSecondary"> + {t('ecogesture.reset')} </Button> )} </div> diff --git a/src/components/Ecogesture/EcogestureList/__snapshots__/EcogestureList.spec.tsx.snap b/src/components/Ecogesture/EcogestureList/__snapshots__/EcogestureList.spec.tsx.snap index 73e301dfd68e276c7580c291e7a93f8ed16ec738..3a8441cc4fa2d6a2870de568ed168facf4296c51 100644 --- a/src/components/Ecogesture/EcogestureList/__snapshots__/EcogestureList.spec.tsx.snap +++ b/src/components/Ecogesture/EcogestureList/__snapshots__/EcogestureList.spec.tsx.snap @@ -60,7 +60,7 @@ exports[`EcogesturesList component should be rendered correctly 1`] = ` <span class="MuiButton-label" > - ecogesture.reinit + ecogesture.reset </span> <span class="MuiTouchRipple-root" diff --git a/src/components/Ecogesture/EcogestureReinitModal/EcogestureReinitModal.spec.tsx b/src/components/Ecogesture/EcogestureResetModal/EcogestureResetModal.spec.tsx similarity index 52% rename from src/components/Ecogesture/EcogestureReinitModal/EcogestureReinitModal.spec.tsx rename to src/components/Ecogesture/EcogestureResetModal/EcogestureResetModal.spec.tsx index a37d0c48f64a214b5eddc8553bfaa81331dc50c6..f7140298cd585f51a9e7d82a45099c20d4287217 100644 --- a/src/components/Ecogesture/EcogestureReinitModal/EcogestureReinitModal.spec.tsx +++ b/src/components/Ecogesture/EcogestureResetModal/EcogestureResetModal.spec.tsx @@ -1,14 +1,14 @@ import { render } from '@testing-library/react' import React from 'react' -import EcogestureReinitModal from './EcogestureReinitModal' +import EcogestureResetModal from './EcogestureResetModal' -describe('EcogestureReinitModal component', () => { +describe('EcogestureResetModal component', () => { it('should be rendered correctly', async () => { const { baseElement } = render( - <EcogestureReinitModal + <EcogestureResetModal open={true} - handleCloseClick={jest.fn()} - handleLaunchReinit={jest.fn()} + closeEcogestureResetModal={jest.fn()} + handleConfirmReset={jest.fn()} /> ) expect(baseElement).toMatchSnapshot() diff --git a/src/components/Ecogesture/EcogestureReinitModal/EcogestureReinitModal.tsx b/src/components/Ecogesture/EcogestureResetModal/EcogestureResetModal.tsx similarity index 57% rename from src/components/Ecogesture/EcogestureReinitModal/EcogestureReinitModal.tsx rename to src/components/Ecogesture/EcogestureResetModal/EcogestureResetModal.tsx index 6fa3b3934dffa31e4bf02f7c1c259422ae54c2d9..afcbde8ffd0460edb97114e56e42aaf89a9d32e2 100644 --- a/src/components/Ecogesture/EcogestureReinitModal/EcogestureReinitModal.tsx +++ b/src/components/Ecogesture/EcogestureResetModal/EcogestureResetModal.tsx @@ -5,24 +5,24 @@ import warningIcon from 'assets/icons/ico/warn-orange.svg' import { useI18n } from 'cozy-ui/transpiled/react/I18n' import Icon from 'cozy-ui/transpiled/react/Icon' import React from 'react' -import './ecogestureReinitModal.scss' +import './ecogestureResetModal.scss' -interface EcogestureReinitModalProps { +interface EcogestureResetModalProps { open: boolean - handleCloseClick: () => void - handleLaunchReinit: () => void + closeEcogestureResetModal: () => void + handleConfirmReset: () => void } -const EcogestureReinitModal = ({ +const EcogestureResetModal = ({ open, - handleCloseClick, - handleLaunchReinit, -}: EcogestureReinitModalProps) => { + closeEcogestureResetModal, + handleConfirmReset, +}: EcogestureResetModalProps) => { const { t } = useI18n() return ( <Dialog open={open} - onClose={handleCloseClick} + onClose={closeEcogestureResetModal} aria-labelledby="accessibility-title" classes={{ root: 'modal-root', @@ -35,46 +35,46 @@ const EcogestureReinitModal = ({ <IconButton aria-label={t('feedback.accessibility.button_close')} className="modal-paper-close-button" - onClick={handleCloseClick} + onClick={closeEcogestureResetModal} > <Icon icon={CloseIcon} size={16} /> </IconButton> - <div className="eg-reinit-modal"> + <div className="eg-reset-modal"> <Icon icon={warningIcon} size={63} /> <div className="title text-20-bold"> - {t('ecogesture.reinitModal.title_part1')} + {t('ecogesture.resetModal.title_part1')} <span className="warn-title"> - {t('ecogesture.reinitModal.title_part2')} + {t('ecogesture.resetModal.title_part2')} </span> - {t('ecogesture.reinitModal.title_part3')} + {t('ecogesture.resetModal.title_part3')} <span className="warn-title"> - {t('ecogesture.reinitModal.title_part4')} + {t('ecogesture.resetModal.title_part4')} </span> - {t('ecogesture.reinitModal.title_part5')} + {t('ecogesture.resetModal.title_part5')} <span className="warn-title"> - {t('ecogesture.reinitModal.title_part6')} + {t('ecogesture.resetModal.title_part6')} </span> </div> <div className="text-16-normal text"> - {t('ecogesture.reinitModal.text1')} + {t('ecogesture.resetModal.text1')} </div> <div className="text-16-bold text"> - {t('ecogesture.reinitModal.text2')} + {t('ecogesture.resetModal.text2')} </div> <div className="buttons-container"> <Button - aria-label={t('ecogesture.reinitModal.btn1')} - onClick={handleCloseClick} + aria-label={t('ecogesture.resetModal.btn1')} + onClick={closeEcogestureResetModal} className="btnSecondary" > - {t('ecogesture.reinitModal.btn1')} + {t('ecogesture.resetModal.btn1')} </Button> <Button - aria-label={t('ecogesture.reinitModal.btn2')} - onClick={handleLaunchReinit} + aria-label={t('ecogesture.resetModal.btn2')} + onClick={handleConfirmReset} className="btnPrimary" > - {t('ecogesture.reinitModal.btn2')} + {t('ecogesture.resetModal.btn2')} </Button> </div> </div> @@ -82,4 +82,4 @@ const EcogestureReinitModal = ({ ) } -export default EcogestureReinitModal +export default EcogestureResetModal diff --git a/src/components/Ecogesture/EcogestureReinitModal/__snapshots__/EcogestureReinitModal.spec.tsx.snap b/src/components/Ecogesture/EcogestureResetModal/__snapshots__/EcogestureResetModal.spec.tsx.snap similarity index 83% rename from src/components/Ecogesture/EcogestureReinitModal/__snapshots__/EcogestureReinitModal.spec.tsx.snap rename to src/components/Ecogesture/EcogestureResetModal/__snapshots__/EcogestureResetModal.spec.tsx.snap index 18d92802a010d3557aee5ec1a19713867e41f0d7..caa340983c1c203a1cc98b04429ea1c045f13798 100644 --- a/src/components/Ecogesture/EcogestureReinitModal/__snapshots__/EcogestureReinitModal.spec.tsx.snap +++ b/src/components/Ecogesture/EcogestureResetModal/__snapshots__/EcogestureResetModal.spec.tsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`EcogestureReinitModal component should be rendered correctly 1`] = ` +exports[`EcogestureResetModal component should be rendered correctly 1`] = ` <body style="padding-right: 0px; overflow: hidden;" > @@ -61,7 +61,7 @@ exports[`EcogestureReinitModal component should be rendered correctly 1`] = ` /> </button> <div - class="eg-reinit-modal" + class="eg-reset-modal" > <svg class="styles__icon___23x3R" @@ -75,40 +75,40 @@ exports[`EcogestureReinitModal component should be rendered correctly 1`] = ` <div class="title text-20-bold" > - ecogesture.reinitModal.title_part1 + ecogesture.resetModal.title_part1 <span class="warn-title" > - ecogesture.reinitModal.title_part2 + ecogesture.resetModal.title_part2 </span> - ecogesture.reinitModal.title_part3 + ecogesture.resetModal.title_part3 <span class="warn-title" > - ecogesture.reinitModal.title_part4 + ecogesture.resetModal.title_part4 </span> - ecogesture.reinitModal.title_part5 + ecogesture.resetModal.title_part5 <span class="warn-title" > - ecogesture.reinitModal.title_part6 + ecogesture.resetModal.title_part6 </span> </div> <div class="text-16-normal text" > - ecogesture.reinitModal.text1 + ecogesture.resetModal.text1 </div> <div class="text-16-bold text" > - ecogesture.reinitModal.text2 + ecogesture.resetModal.text2 </div> <div class="buttons-container" > <button - aria-label="ecogesture.reinitModal.btn1" + aria-label="ecogesture.resetModal.btn1" class="MuiButtonBase-root MuiButton-root MuiButton-text btnSecondary" tabindex="0" type="button" @@ -116,14 +116,14 @@ exports[`EcogestureReinitModal component should be rendered correctly 1`] = ` <span class="MuiButton-label" > - ecogesture.reinitModal.btn1 + ecogesture.resetModal.btn1 </span> <span class="MuiTouchRipple-root" /> </button> <button - aria-label="ecogesture.reinitModal.btn2" + aria-label="ecogesture.resetModal.btn2" class="MuiButtonBase-root MuiButton-root MuiButton-text btnPrimary" tabindex="0" type="button" @@ -131,7 +131,7 @@ exports[`EcogestureReinitModal component should be rendered correctly 1`] = ` <span class="MuiButton-label" > - ecogesture.reinitModal.btn2 + ecogesture.resetModal.btn2 </span> <span class="MuiTouchRipple-root" diff --git a/src/components/Ecogesture/EcogestureReinitModal/ecogestureReinitModal.scss b/src/components/Ecogesture/EcogestureResetModal/ecogestureResetModal.scss similarity index 94% rename from src/components/Ecogesture/EcogestureReinitModal/ecogestureReinitModal.scss rename to src/components/Ecogesture/EcogestureResetModal/ecogestureResetModal.scss index d5f0ae349fb52fa9e1ccb1031db1ec374f864383..5b8d193b0808b173d131ff6e45684482c7ae2d69 100644 --- a/src/components/Ecogesture/EcogestureReinitModal/ecogestureReinitModal.scss +++ b/src/components/Ecogesture/EcogestureResetModal/ecogestureResetModal.scss @@ -1,6 +1,6 @@ @import 'src/styles/base/color'; -.eg-reinit-modal { +.eg-reset-modal { display: flex; flex-direction: column; gap: 1rem; diff --git a/src/components/Ecogesture/EcogestureTabsView.tsx b/src/components/Ecogesture/EcogestureTabsView.tsx index f968257255b60a1a1d08624853602f1be02a1dce..afecdca34284d19092dcb34d68d2ed47c49ff92c 100644 --- a/src/components/Ecogesture/EcogestureTabsView.tsx +++ b/src/components/Ecogesture/EcogestureTabsView.tsx @@ -16,7 +16,7 @@ import { updateProfile } from 'store/profile/profile.slice' import EcogestureEmptyList from './EcogestureEmptyList/EcogestureEmptyList' import EcogestureInitModal from './EcogestureInitModal/EcogestureInitModal' import EcogestureList from './EcogestureList/EcogestureList' -import EcogestureReinitModal from './EcogestureReinitModal/EcogestureReinitModal' +import EcogestureResetModal from './EcogestureResetModal/EcogestureResetModal' import './ecogestureTabsView.scss' interface TabPanelProps { @@ -60,9 +60,7 @@ const EcogestureTabsView = () => { >([]) const [totalViewed, setTotalViewed] = useState<number>(0) const [totalAvailable, setTotalAvailable] = useState<number>(0) - const [openEcogestureInitModal, setOpenEcogestureInitModal] = - useState<boolean>(!profile.haveSeenEcogestureModal) - const [openEcogestureReinitModal, setOpenEcogestureReinitModal] = + const [openEcogestureResetModal, setOpenEcogestureResetModal] = useState<boolean>(false) const ecogestureService = useMemo( @@ -70,36 +68,22 @@ const EcogestureTabsView = () => { [client] ) - const handleReinitClick = useCallback(() => { - setOpenEcogestureReinitModal(true) - }, []) + const openResetEcogestureModal = () => { + setOpenEcogestureResetModal(true) + } + const closeEcogestureResetModal = () => { + setOpenEcogestureResetModal(false) + } - const handleLaunchForm = useCallback(async () => { - dispatch(updateProfile({ haveSeenEcogestureModal: true })) - setOpenEcogestureInitModal(false) - navigate('/ecogesture-form?modal=false') - }, [dispatch, navigate]) - - const handleCloseEcogestureInitModal = useCallback(async () => { - dispatch(updateProfile({ haveSeenEcogestureModal: true })) - setOpenEcogestureInitModal(false) - }, [dispatch]) - - const handleLaunchReinit = useCallback(async () => { - setOpenEcogestureReinitModal(false) + const handleConfirmReset = useCallback(async () => { + closeEcogestureResetModal() setIsLoading(true) - const reset = await ecogestureService.reinitAllEcogestures() - if (reset) { - setOpenEcogestureReinitModal(false) - setIsLoading(false) - navigate('/ecogesture-form?modal=true') - } + const reset = await ecogestureService.resetAllEcogestures() + if (!reset) return + setIsLoading(false) + navigate('/ecogesture-form?modal=true') }, [ecogestureService, navigate]) - const handleCloseEcogestureReinitModal = useCallback(() => { - setOpenEcogestureReinitModal(false) - }, []) - const handleChange = useCallback( (event: React.ChangeEvent<object>, newValue: number) => { event.preventDefault() @@ -241,7 +225,7 @@ const EcogestureTabsView = () => { setTab={setTabValue} isObjective={true} isSelectionDone={true} - handleReinitClick={handleReinitClick} + openResetEcogestureModal={openResetEcogestureModal} /> ) : ( <EcogestureList @@ -249,7 +233,7 @@ const EcogestureTabsView = () => { displaySelection={totalAvailable !== totalViewed} selectionTotal={totalAvailable} selectionViewed={totalViewed} - handleReinitClick={handleReinitClick} + openResetEcogestureModal={openResetEcogestureModal} /> ))} {!profile.isProfileEcogestureCompleted && ( @@ -257,7 +241,7 @@ const EcogestureTabsView = () => { setTab={setTabValue} isObjective={true} isSelectionDone={false} - handleReinitClick={handleReinitClick} + openResetEcogestureModal={openResetEcogestureModal} /> )} </TabPanel> @@ -270,7 +254,7 @@ const EcogestureTabsView = () => { setTab={setTabValue} isObjective={false} isSelectionDone={true} - handleReinitClick={handleReinitClick} + openResetEcogestureModal={openResetEcogestureModal} /> ) : ( <EcogestureList @@ -278,7 +262,7 @@ const EcogestureTabsView = () => { displaySelection={totalAvailable !== totalViewed} selectionTotal={totalAvailable} selectionViewed={totalViewed} - handleReinitClick={handleReinitClick} + openResetEcogestureModal={openResetEcogestureModal} /> ))} {!profile.isProfileEcogestureCompleted && ( @@ -286,7 +270,7 @@ const EcogestureTabsView = () => { setTab={setTabValue} isObjective={false} isSelectionDone={false} - handleReinitClick={handleReinitClick} + openResetEcogestureModal={openResetEcogestureModal} /> )} </TabPanel> @@ -303,18 +287,13 @@ const EcogestureTabsView = () => { </TabPanel> </> )} - {openEcogestureInitModal && ( - <EcogestureInitModal - open={openEcogestureInitModal} - handleCloseClick={handleCloseEcogestureInitModal} - handleLaunchForm={handleLaunchForm} - /> - )} - {openEcogestureReinitModal && ( - <EcogestureReinitModal - open={openEcogestureReinitModal} - handleCloseClick={handleCloseEcogestureReinitModal} - handleLaunchReinit={handleLaunchReinit} + <EcogestureInitModal /> + + {openEcogestureResetModal && ( + <EcogestureResetModal + open={openEcogestureResetModal} + closeEcogestureResetModal={closeEcogestureResetModal} + handleConfirmReset={handleConfirmReset} /> )} </Content> diff --git a/src/components/EcogestureForm/EcogestureLaunchFormModal/EcogestureLaunchFormModal.tsx b/src/components/EcogestureForm/EcogestureLaunchFormModal/EcogestureLaunchFormModal.tsx index d7254529856ff6b6a18f6e67ee9ed18d0efe9f09..d9ddbbe6d223a910b9acf6d08a890948ec4131c2 100644 --- a/src/components/EcogestureForm/EcogestureLaunchFormModal/EcogestureLaunchFormModal.tsx +++ b/src/components/EcogestureForm/EcogestureLaunchFormModal/EcogestureLaunchFormModal.tsx @@ -39,8 +39,8 @@ const EcogestureLaunchFormModal = ({ <div className="title text-20-bold"> {t('ecogesture.initModal.title')} </div> - <div className="text-16-normal text"> - {t('ecogesture.initModal.text3')} + <div className="text-16-normal"> + {t('ecogesture.initModal.launchForm')} </div> <Button aria-label={t('ecogesture.initModal.btn2')} diff --git a/src/components/EcogestureForm/EcogestureLaunchFormModal/__snapshots__/EcogestureLaunchFormModal.spec.tsx.snap b/src/components/EcogestureForm/EcogestureLaunchFormModal/__snapshots__/EcogestureLaunchFormModal.spec.tsx.snap index 2516ca2ce6b53497a0feee3ebf63e36e4f00bcda..61719c7d1d9696ac0aaa3919968d039320d3cace 100644 --- a/src/components/EcogestureForm/EcogestureLaunchFormModal/__snapshots__/EcogestureLaunchFormModal.spec.tsx.snap +++ b/src/components/EcogestureForm/EcogestureLaunchFormModal/__snapshots__/EcogestureLaunchFormModal.spec.tsx.snap @@ -69,9 +69,9 @@ exports[`EcogestureLaunchFormModal component should be rendered correctly 1`] = ecogesture.initModal.title </div> <div - class="text-16-normal text" + class="text-16-normal" > - ecogesture.initModal.text3 + ecogesture.initModal.launchForm </div> <button aria-label="ecogesture.initModal.btn2" diff --git a/src/locales/fr.json b/src/locales/fr.json index 32c7bb1ea53ea9abf52a61f0ab8c67995eacf43c..ba513ab60c237b61736ceb31aeb3a8286ab7d435 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -493,12 +493,12 @@ "title": "Sélectionner mes astuces", "text1": "Les astuces présentées sont des actions qui vous permettent de réduire vos consommations et donc vos factures. On parle parfois d’écogestes ", "text2": "Vous pouvez sélectionner celles à mettre en objectifs et celles que vous appliquez déjà.", - "text3": "Afin de pré-sélectionner les astuces correspondant à votre consommation, merci de répondre à quelques rapides questions.", + "launchForm": "Afin de pré-sélectionner les astuces correspondant à votre consommation, merci de répondre à quelques rapides questions.", "btn1": "Plus tard", "btn2": "C'est parti !" }, - "reinit": "Réinitialiser ma sélection", - "reinitModal": { + "reset": "Réinitialiser ma sélection", + "resetModal": { "title_part1": "Cette action", "title_part2": "supprimera votre liste d’astuces", "title_part3": "sélectionnées dans", diff --git a/src/services/ecogesture.service.spec.ts b/src/services/ecogesture.service.spec.ts index d002f5f570f4570d153231970d9bd059ea4f9de7..d04e0116ba03cc6c37e8374d7974f7a9cda2d8c6 100644 --- a/src/services/ecogesture.service.spec.ts +++ b/src/services/ecogesture.service.spec.ts @@ -91,22 +91,22 @@ describe('Ecogesture service', () => { ) }) }) - describe('reinitAllEcogestures', () => { + describe('resetAllEcogestures', () => { it('should return true when 3 ecogestures stored', async () => { mockClient.query.mockResolvedValueOnce(mockQueryResultMockedEcogestures) - const result = await ecogestureService.reinitAllEcogestures() + const result = await ecogestureService.resetAllEcogestures() expect(mockClient.save).toHaveBeenCalledTimes(3) expect(result).toBe(true) }) it('should return true when no ecogestures stored', async () => { mockClient.query.mockResolvedValueOnce(mockQueryResultEmpty) - const result = await ecogestureService.reinitAllEcogestures() + const result = await ecogestureService.resetAllEcogestures() expect(result).toBe(true) }) - it('should throw exception when error happened on reinit', async () => { + it('should throw exception when error happened on reset', async () => { mockClient.save.mockRejectedValue(new Error()) mockClient.query.mockResolvedValueOnce(mockQueryResultMockedEcogestures) - await expect(ecogestureService.reinitAllEcogestures()).rejects.toThrow( + await expect(ecogestureService.resetAllEcogestures()).rejects.toThrow( new Error() ) }) diff --git a/src/services/ecogesture.service.ts b/src/services/ecogesture.service.ts index 819959ca2fe0ba3a17142f7c3541d203c1e959ab..ce07f6f1d934b81f63bd4de27142850714ce78cb 100644 --- a/src/services/ecogesture.service.ts +++ b/src/services/ecogesture.service.ts @@ -197,7 +197,7 @@ export default class EcogestureService { } } - public async reinitAllEcogestures(): Promise<boolean> { + public async resetAllEcogestures(): Promise<boolean> { const ecogestures = await this.getAllEcogestures() try { for (const ecogesture of ecogestures) { @@ -210,9 +210,7 @@ export default class EcogestureService { } return true } catch (error) { - const errorMessage = `Error reinitAllEcogestures: ${JSON.stringify( - error - )}` + const errorMessage = `Error resetAllEcogestures: ${JSON.stringify(error)}` logStack('error', errorMessage) logApp.error(errorMessage) Sentry.captureException(error)