From ea7d3dead24dd865f9618cc51b6e8e743122d8c7 Mon Sep 17 00:00:00 2001 From: Bastien DUMONT <bdumont@grandlyon.com> Date: Tue, 30 Apr 2024 13:08:19 +0000 Subject: [PATCH] refactor: remove unnecessary state and fix typo --- .vscode/settings.json | 1 - .../EcogestureEmptyList.spec.tsx | 10 +-- .../EcogestureEmptyList.tsx | 10 +-- .../EcogestureInitModal.spec.tsx | 47 +++++++----- .../EcogestureInitModal.tsx | 39 ++++++---- .../EcogestureList/EcogestureList.spec.tsx | 3 +- .../EcogestureList/EcogestureList.tsx | 10 +-- .../EcogestureList.spec.tsx.snap | 2 +- .../EcogestureResetModal.spec.tsx} | 10 +-- .../EcogestureResetModal.tsx} | 52 ++++++------- .../EcogestureResetModal.spec.tsx.snap} | 28 +++---- .../ecogestureResetModal.scss} | 2 +- .../Ecogesture/EcogestureTabsView.tsx | 75 +++++++------------ .../EcogestureLaunchFormModal.tsx | 4 +- .../EcogestureLaunchFormModal.spec.tsx.snap | 4 +- src/locales/fr.json | 6 +- src/services/ecogesture.service.spec.ts | 10 +-- src/services/ecogesture.service.ts | 6 +- 18 files changed, 156 insertions(+), 163 deletions(-) rename src/components/Ecogesture/{EcogestureReinitModal/EcogestureReinitModal.spec.tsx => EcogestureResetModal/EcogestureResetModal.spec.tsx} (52%) rename src/components/Ecogesture/{EcogestureReinitModal/EcogestureReinitModal.tsx => EcogestureResetModal/EcogestureResetModal.tsx} (57%) rename src/components/Ecogesture/{EcogestureReinitModal/__snapshots__/EcogestureReinitModal.spec.tsx.snap => EcogestureResetModal/__snapshots__/EcogestureResetModal.spec.tsx.snap} (83%) rename src/components/Ecogesture/{EcogestureReinitModal/ecogestureReinitModal.scss => EcogestureResetModal/ecogestureResetModal.scss} (94%) diff --git a/.vscode/settings.json b/.vscode/settings.json index b3f020833..2da2aa9b3 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 8c7af8fa4..bb80e51c2 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 b51c6f032..67fded06b 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 f42e399cf..bd3c32ab0 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 4575d4809..c62517b09 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 bff4393a5..d512de1a4 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 35377c4fc..f46cc200b 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 73e301dfd..3a8441cc4 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 a37d0c48f..f7140298c 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 6fa3b3934..afcbde8ff 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 18d92802a..caa340983 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 d5f0ae349..5b8d193b0 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 f96825725..afecdca34 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 d72545298..d9ddbbe6d 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 2516ca2ce..61719c7d1 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 32c7bb1ea..ba513ab60 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 d002f5f57..d04e0116b 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 819959ca2..ce07f6f1d 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) -- GitLab