diff --git a/src/components/Home/ConsumptionView.spec.tsx b/src/components/Home/ConsumptionView.spec.tsx index 704f02b8e0dbcf6d44a505ba5d87320ecdf46ae9..b8ac9f486ce1abddb7ffaaae82a13cb85648c1d1 100644 --- a/src/components/Home/ConsumptionView.spec.tsx +++ b/src/components/Home/ConsumptionView.spec.tsx @@ -102,6 +102,7 @@ describe('ConsumptionView component', () => { fluidStatus: mockFluidStatus, releaseNotes: mockInitialEcolyoState.global.releaseNotes, }, + modal: { partnersIssueModal: mockedPartnersIssueModal }, }) const wrapper = mount( <Provider store={store}> @@ -129,6 +130,7 @@ describe('ConsumptionView component', () => { fluidStatus: mockFluidStatus, releaseNotes: mockInitialEcolyoState.global.releaseNotes, }, + modal: { partnersIssueModal: mockedPartnersIssueModal }, }) const wrapper = mount( <Provider store={store}> @@ -151,6 +153,7 @@ describe('ConsumptionView component', () => { fluidStatus: mockInitialEcolyoState.global.fluidStatus, releaseNotes: mockInitialEcolyoState.global.releaseNotes, }, + modal: { partnersIssueModal: mockedPartnersIssueModal }, }) mount( <Provider store={store}> @@ -171,6 +174,7 @@ describe('ConsumptionView component', () => { fluidStatus: [], releaseNotes: mockInitialEcolyoState.global.releaseNotes, }, + modal: { partnersIssueModal: mockedPartnersIssueModal }, fluidStatus: [], }) const wrapper = mount( @@ -194,6 +198,7 @@ describe('ConsumptionView component', () => { fluidStatus: updatedStatus, releaseNotes: mockInitialEcolyoState.global.releaseNotes, }, + modal: { partnersIssueModal: mockedPartnersIssueModal }, fluidStatus: updatedStatus, }) const wrapper = mount( @@ -217,6 +222,7 @@ describe('ConsumptionView component', () => { fluidStatus: updatedStatus, releaseNotes: mockInitialEcolyoState.global.releaseNotes, }, + modal: { partnersIssueModal: mockedPartnersIssueModal }, }) const wrapper = mount( <Provider store={store}> @@ -240,8 +246,8 @@ describe('ConsumptionView component', () => { global: { fluidStatus: updatedStatus, releaseNotes: mockInitialEcolyoState.global.releaseNotes, - openPartnersIssueModal: { ...mockedPartnersIssueModal, egl: true }, }, + modal: { partnersIssueModal: { ...mockedPartnersIssueModal, egl: true } }, }) useDispatchSpy.mockReturnValue(jest.fn()) mockUpdateProfile.mockResolvedValue(mockTestProfile1) @@ -264,8 +270,8 @@ describe('ConsumptionView component', () => { global: { fluidStatus: updatedStatus, releaseNotes: mockInitialEcolyoState.global.releaseNotes, - openPartnersIssueModal: false, }, + modal: { partnersIssueModal: mockedPartnersIssueModal }, }) useDispatchSpy.mockReturnValue(jest.fn()) const wrapper = mount( @@ -287,8 +293,8 @@ describe('ConsumptionView component', () => { global: { fluidStatus: updatedStatus, releaseNotes: mockInitialEcolyoState.global.releaseNotes, - openPartnersIssueModal: mockedPartnersIssueModal, }, + modal: { partnersIssueModal: mockedPartnersIssueModal }, }) useDispatchSpy.mockReturnValue(jest.fn()) const wrapper = mount( @@ -311,8 +317,8 @@ describe('ConsumptionView component', () => { global: { fluidStatus: updatedStatus, releaseNotes: mockInitialEcolyoState.global.releaseNotes, - openPartnersIssueModal: mockedPartnersIssueModal, }, + modal: { partnersIssueModal: mockedPartnersIssueModal }, }) useDispatchSpy.mockReturnValue(jest.fn()) mockUpdateProfile.mockResolvedValue(mockTestProfile1) @@ -334,13 +340,12 @@ describe('ConsumptionView component', () => { }, global: { fluidStatus: updatedStatus, - openPartnersIssueModal: mockedPartnersIssueModal, releaseNotes: { show: true, notes: [{ description: 'description', title: 'title' }], }, }, - openPartnersIssueModal: mockedPartnersIssueModal, + modal: { partnersIssueModal: mockedPartnersIssueModal }, }) useDispatchSpy.mockReturnValue(jest.fn()) mockUpdateProfile.mockResolvedValue(mockTestProfile1) diff --git a/src/components/Home/ConsumptionView.tsx b/src/components/Home/ConsumptionView.tsx index 83a6b6199ecb48bf127eb9b54d0e763fbdc172bf..e640cffc4a41660d90cbc72409ad65afc9a8b025 100644 --- a/src/components/Home/ConsumptionView.tsx +++ b/src/components/Home/ConsumptionView.tsx @@ -21,11 +21,8 @@ import { useNavigate } from 'react-router-dom' import ProfileService from 'services/profile.service' import { AppStore } from 'store' import { setCurrentTimeStep, setLoading } from 'store/chart/chart.actions' -import { - setCustomPopup, - setPartnersIssue, - showReleaseNotes, -} from 'store/global/global.actions' +import { setCustomPopup, showReleaseNotes } from 'store/global/global.actions' +import { openPartnersModal } from 'store/modal/modal.actions' import { getKonnectorUpdateError, getTodayDate, @@ -46,12 +43,8 @@ const ConsumptionView: React.FC<ConsumptionViewProps> = ({ const isMulti = fluidType !== FluidType.MULTIFLUID const { chart: { currentTimeStep, loading }, - global: { - fluidStatus, - releaseNotes, - customPopupModal, - openPartnersIssueModal, - }, + global: { fluidStatus, releaseNotes, customPopupModal }, + modal: { partnersIssueModal }, } = useSelector((state: AppStore) => state.ecolyo) const [isFluidKonnected, setIsFluidKonnected] = useState<boolean>(false) @@ -118,15 +111,15 @@ const ConsumptionView: React.FC<ConsumptionViewProps> = ({ }) if (updatedProfile) { dispatch( - setPartnersIssue({ - ...openPartnersIssueModal, + openPartnersModal({ + ...partnersIssueModal, [getPartnerKey(fluidType)]: false, }) ) } } }, - [client, dispatch, openPartnersIssueModal] + [client, dispatch, partnersIssueModal] ) const handleCloseCustomPopupModal = async () => { @@ -251,7 +244,7 @@ const ConsumptionView: React.FC<ConsumptionViewProps> = ({ <PartnerIssueModal key={issuedFluid.fluidType} issuedFluid={issuedFluid} - open={openPartnersIssueModal[getPartnerKey(issuedFluid.fluidType)]} + open={partnersIssueModal[getPartnerKey(issuedFluid.fluidType)]} handleCloseClick={handleClosePartnerIssueModal} /> ))} diff --git a/src/components/Konnector/KonnectorViewerCard.tsx b/src/components/Konnector/KonnectorViewerCard.tsx index 944987ce3b653f4b344778099426b62d73a12f88..1ce577ec3f9c96a60165efdc4707bb9f24781618 100644 --- a/src/components/Konnector/KonnectorViewerCard.tsx +++ b/src/components/Konnector/KonnectorViewerCard.tsx @@ -84,9 +84,11 @@ const KonnectorViewerCard: React.FC<KonnectorViewerCardProps> = ({ const konnector: Konnector | null = fluidStatus.connection.konnector const account: Account | null = fluidStatus.connection.account const trigger: Trigger | null = fluidStatus.connection.trigger - const { fluidStatus: statusArray, shouldRefreshConsent } = useSelector( - (state: AppStore) => state.ecolyo.global - ) + const { + fluidStatus: statusArray, + shouldRefreshConsent, + partnersInfo, + } = useSelector((state: AppStore) => state.ecolyo.global) const [openModal, setOpenModal] = useState(false) const [isUpdating, setIsUpdating] = useState(false) @@ -221,11 +223,11 @@ const KonnectorViewerCard: React.FC<KonnectorViewerCardProps> = ({ ) } if (updatedFluidStatus.length > 0) { - const partnersInfo: PartnersInfo | undefined = - await partnersInfoService.getPartnersInfo() - const _updatedFluidStatus: FluidStatus[] = - await fluidService.getFluidStatus(partnersInfo) - dispatch(setFluidStatus(_updatedFluidStatus)) + // const partnersInfo = await partnersInfoService.getPartnersInfo() + const updatedFluidStatus = await fluidService.getFluidStatus( + partnersInfo + ) + dispatch(setFluidStatus(updatedFluidStatus)) } } diff --git a/src/components/Splash/SplashRoot.tsx b/src/components/Splash/SplashRoot.tsx index 01ca16d8a267526924f5fe91db7829bbefb272d4..c10e94d4742f27e862553eef92914d7d26164442 100644 --- a/src/components/Splash/SplashRoot.tsx +++ b/src/components/Splash/SplashRoot.tsx @@ -44,7 +44,6 @@ import { GlobalActionTypes, setCustomPopup, setFluidStatus, - setPartnersIssue, showReleaseNotes, toggleAnalysisNotification, toggleChallengeActionNotification, @@ -52,6 +51,7 @@ import { toggleChallengeExplorationNotification, updateTermValidation, } from 'store/global/global.actions' +import { ModalActionTypes, openPartnersModal } from 'store/modal/modal.actions' import { ProfileActionTypes, updateProfile, @@ -98,6 +98,7 @@ const SplashRoot = ({ fadeTimer = 1000, children }: SplashRootProps) => { | ProfileActionTypes | ProfileEcogestureActionTypes | ProfileTypeActionTypes + | ModalActionTypes > = useDispatch() /** Return current status of partner if modal has not been seen today */ @@ -168,7 +169,7 @@ const SplashRoot = ({ fadeTimer = 1000, children }: SplashRootProps) => { } if (Object.values(partnersIssue).some(issue => issue)) { - dispatch(setPartnersIssue(partnersIssue)) + dispatch(openPartnersModal(partnersIssue)) } } } catch (error) { @@ -199,6 +200,7 @@ const SplashRoot = ({ fadeTimer = 1000, children }: SplashRootProps) => { setInitStepErrors ) const customPopupService = new CustomPopupService(client) + const partnersInfoService = new PartnersInfoService(client) const ms = new MigrationService(client, setInitStepErrors) try { const migrationsResult: ReleaseNotes = await ms.runMigrations( @@ -347,17 +349,20 @@ const SplashRoot = ({ fadeTimer = 1000, children }: SplashRootProps) => { }) } - const customPopup = await customPopupService.getCustomPopup() - if (profile && customPopup) { - await processCustomPopup(profile, customPopup) - } - - const partnersInfoService = new PartnersInfoService(client) - const partnersInfo = await partnersInfoService.getPartnersInfo() - if (profile && partnersInfo) { - await processFluidsStatus(profile, partnersInfo) - await processPartnersStatus(profile, partnersInfo) - } + /** + * Load custom popup and partners info synchronously so these treatments don't block the loading + */ + customPopupService.getCustomPopup().then(async customPopup => { + if (profile && customPopup) { + await processCustomPopup(profile, customPopup) + } + }) + partnersInfoService.getPartnersInfo().then(async partnersInfo => { + if (profile && partnersInfo) { + await processFluidsStatus(profile, partnersInfo) + await processPartnersStatus(profile, partnersInfo) + } + }) if (subscribed) { logApp.info('[Initialization] Finished successfully !') diff --git a/src/models/global.model.ts b/src/models/global.model.ts index 0af069136897307a2aa5830d33d6334e1d2b95d1..1d4edf10f092d53335e3f06ba1804cf1c83e9115 100644 --- a/src/models/global.model.ts +++ b/src/models/global.model.ts @@ -3,6 +3,7 @@ import { ScreenType } from 'enum/screen.enum' import { TermsStatus } from 'models' import { CustomPopup } from './customPopup.model' import { FluidStatus } from './fluid.model' +import { PartnersInfo } from './partnersInfo.model' import { ReleaseNotes } from './releaseNotes.model' import { SgeStore } from './sgeStore.model' @@ -17,11 +18,7 @@ export interface GlobalState { fluidStatus: FluidStatus[] fluidTypes: FluidType[] customPopupModal: CustomPopup - openPartnersIssueModal: { - enedis: boolean - egl: boolean - grdf: boolean - } shouldRefreshConsent: boolean sgeConnect: SgeStore + partnersInfo: PartnersInfo } diff --git a/src/models/modal.model.ts b/src/models/modal.model.ts index 90dd1a34fd3564201a82261c751fd0ecce4db3dc..d98440cc5f4c7303f906f4bdaaf347156419386a 100644 --- a/src/models/modal.model.ts +++ b/src/models/modal.model.ts @@ -1,3 +1,8 @@ export interface ModalState { isFeedbacksOpen: boolean + partnersIssueModal: { + enedis: boolean + egl: boolean + grdf: boolean + } } diff --git a/src/services/fluid.service.ts b/src/services/fluid.service.ts index 4b2b95a13b544ebd301c4e2772084de0f107e516..3de8f5c45b2851602969df86e00dca3571419be4 100644 --- a/src/services/fluid.service.ts +++ b/src/services/fluid.service.ts @@ -112,6 +112,7 @@ export default class FluidService { FluidType.WATER, FluidType.GAS, ]) + const result: FluidStatus[] = [ { fluidType: FluidType.ELECTRICITY, diff --git a/src/store/global/global.actions.ts b/src/store/global/global.actions.ts index c8e6204f68d7a420afeddcd6a6fe31401163ad00..575d97ee5ce0f2093aa4cb93b20b29a75e71f46f 100644 --- a/src/store/global/global.actions.ts +++ b/src/store/global/global.actions.ts @@ -2,30 +2,37 @@ import { FluidType } from 'enum/fluid.enum' import { ScreenType } from 'enum/screen.enum' import { FluidConnection, FluidStatus, TermsStatus } from 'models' import { CustomPopup } from 'models/customPopup.model' +import { PartnersInfo } from 'models/partnersInfo.model' import { Notes } from 'models/releaseNotes.model' import { SgeStore } from 'models/sgeStore.model' export const CHANGE_SCREEN_TYPE = 'CHANGE_SCREEN_TYPE' +export const SET_CUSTOM_POPUP = 'SET_CUSTOM_POPUP' +export const SET_FLUID_STATUS = 'SET_FLUID_STATUS' +export const SET_PARTNERS_INFO = 'SET_PARTNERS_INFO' +export const SET_SHOULD_REFRESH_CONSENT = 'SET_SHOULD_REFRESH_CONSENT' export const SHOW_RELEASE_NOTES = 'SHOW_RELEASE_NOTES' -export const TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION = - 'TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION' +export const TOGGLE_ANALYSIS_NOTIFICATION = 'TOGGLE_ANALYSIS_NOTIFICATION' export const TOGGLE_CHALLENGE_ACTION_NOTIFICATION = 'TOGGLE_CHALLENGE_ACTION_NOTIFICATION' export const TOGGLE_CHALLENGE_DUEL_NOTIFICATION = 'TOGGLE_CHALLENGE_DUEL_NOTIFICATION' -export const TOGGLE_ANALYSIS_NOTIFICATION = 'TOGGLE_ANALYSIS_NOTIFICATION' -export const SET_FLUID_STATUS = 'SET_FLUID_STATUS' +export const TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION = + 'TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION' export const UPDATE_FLUID_CONNECTION = 'UPDATE_FLUID_CONNECTION' -export const UPDATE_TERMS_VALIDATION = 'UPDATE_TERMS_VALIDATION' -export const SET_PARTNERS_ISSUE = 'SET_PARTNERS_ISSUE' -export const SET_CUSTOM_POPUP = 'SET_CUSTOM_POPUP' -export const SET_SHOULD_REFRESH_CONSENT = 'SET_SHOULD_REFRESH_CONSENT' export const UPDATE_SGE_CONNECT = 'UPDATE_SGE_CONNECT' +export const UPDATE_TERMS_VALIDATION = 'UPDATE_TERMS_VALIDATION' + interface ChangeScreenType { type: typeof CHANGE_SCREEN_TYPE payload?: ScreenType } +interface SetPartnersInfo { + type: typeof SET_PARTNERS_INFO + payload?: PartnersInfo +} + interface ToogleChallengeExplorationNotification { type: typeof TOGGLE_CHALLENGE_EXPLORATION_NOTIFICATION payload?: boolean @@ -65,16 +72,6 @@ interface ShowReleaseNotes { type: typeof SHOW_RELEASE_NOTES payload?: { show: boolean; notes: Notes[]; redirectLink?: string } } - -interface SetPartnersIssue { - type: typeof SET_PARTNERS_ISSUE - payload?: { - enedis: boolean - egl: boolean - grdf: boolean - } -} - interface SetCustomPopup { type: typeof SET_CUSTOM_POPUP payload: CustomPopup @@ -99,10 +96,10 @@ export type GlobalActionTypes = | UpdatedFluidConnection | UpdateTermValidation | ShowReleaseNotes - | SetPartnersIssue | SetCustomPopup | SetShouldRefreshConsent | UpdateSGEConnect + | SetPartnersInfo export function changeScreenType(screenType: ScreenType): GlobalActionTypes { return { @@ -181,14 +178,10 @@ export function updateTermValidation( } } -export function setPartnersIssue(openPartnersIssueModal: { - enedis: boolean - egl: boolean - grdf: boolean -}): GlobalActionTypes { +export function setPartnersInfo(partnersInfo: PartnersInfo): GlobalActionTypes { return { - type: SET_PARTNERS_ISSUE, - payload: openPartnersIssueModal, + type: SET_PARTNERS_INFO, + payload: partnersInfo, } } diff --git a/src/store/global/global.reducer.ts b/src/store/global/global.reducer.ts index 624e2edbd11368e5476dcb9a06bcd910e081000a..8abedaec8353adbc9095304edf9ce4e032d3c518 100644 --- a/src/store/global/global.reducer.ts +++ b/src/store/global/global.reducer.ts @@ -8,7 +8,7 @@ import { GlobalActionTypes, SET_CUSTOM_POPUP, SET_FLUID_STATUS, - SET_PARTNERS_ISSUE, + SET_PARTNERS_INFO, SET_SHOULD_REFRESH_CONSENT, SHOW_RELEASE_NOTES, TOGGLE_ANALYSIS_NOTIFICATION, @@ -114,10 +114,11 @@ const initialState: GlobalState = { description: '', endDate: '', }, - openPartnersIssueModal: { - enedis: false, - egl: false, - grdf: false, + partnersInfo: { + egl_failure: false, + enedis_failure: false, + grdf_failure: false, + notification_activated: false, }, shouldRefreshConsent: false, sgeConnect: { @@ -213,11 +214,11 @@ export const globalReducer: Reducer<GlobalState> = ( releaseNotes: action.payload, } : state - case SET_PARTNERS_ISSUE: + case SET_PARTNERS_INFO: return action.payload != undefined ? { ...state, - openPartnersIssueModal: action.payload, + partnersInfo: action.payload, } : state case SET_CUSTOM_POPUP: diff --git a/src/store/modal/modal.actions.ts b/src/store/modal/modal.actions.ts index ea74f5ee5c9390638695f051bb6eaf4e8f157044..8ece8265e28c2b80163354f41e17325d0edb5ae6 100644 --- a/src/store/modal/modal.actions.ts +++ b/src/store/modal/modal.actions.ts @@ -1,11 +1,24 @@ export const UPDATE_MODAL_ISFEEDBACKSOPEN = 'UPDATE_MODAL_ISFEEDBACKSOPEN' +export const OPEN_PARTNERS_MODAL = 'SET_PARTNERS_ISSUE' interface UpdateModalFeedbacks { type: typeof UPDATE_MODAL_ISFEEDBACKSOPEN payload?: boolean } -export type ModalActionTypes = UpdateModalFeedbacks +interface OpenPartnersModal { + type: typeof OPEN_PARTNERS_MODAL + payload?: { + enedis: boolean + egl: boolean + grdf: boolean + } +} + +export type ModalActionTypes = + | UpdateModalFeedbacks + | OpenPartnersModal + | { type: null } export function updateModalIsFeedbacksOpen(isOpen: boolean): ModalActionTypes { return { @@ -13,3 +26,14 @@ export function updateModalIsFeedbacksOpen(isOpen: boolean): ModalActionTypes { payload: isOpen, } } + +export function openPartnersModal(openPartnersModal: { + enedis: boolean + egl: boolean + grdf: boolean +}): ModalActionTypes { + return { + type: OPEN_PARTNERS_MODAL, + payload: openPartnersModal, + } +} diff --git a/src/store/modal/modal.reducer.spec.ts b/src/store/modal/modal.reducer.spec.ts index bedcdadeb749caa40f5645647404aaf1b8fa4d6e..ce4ca149e325dfb7ffd4e0ba4268af4fcf35bd65 100644 --- a/src/store/modal/modal.reducer.spec.ts +++ b/src/store/modal/modal.reducer.spec.ts @@ -1,29 +1,94 @@ +import { ModalState } from 'models' import { mockInitialModalState } from '../../../tests/__mocks__/store' -import { UPDATE_MODAL_ISFEEDBACKSOPEN } from './modal.actions' +import { + OPEN_PARTNERS_MODAL, + UPDATE_MODAL_ISFEEDBACKSOPEN, +} from './modal.actions' import { modalReducer } from './modal.reducer' describe('modal reducer', () => { it('should return the initial state', () => { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const result = modalReducer(undefined as any, { type: 'default' }) + const result = modalReducer(undefined, { + type: null, + }) expect(result).toEqual(mockInitialModalState) }) - it('should handle UPDATE_MODAL_ISFEEDBACKSOPEN with payload', () => { - const result = modalReducer(mockInitialModalState, { - type: UPDATE_MODAL_ISFEEDBACKSOPEN, - payload: true, + describe('FeedbackOpen', () => { + it('should handle UPDATE_MODAL_ISFEEDBACKSOPEN with payload', () => { + const result = modalReducer(mockInitialModalState, { + type: UPDATE_MODAL_ISFEEDBACKSOPEN, + payload: true, + }) + expect(result).toEqual({ + ...mockInitialModalState, + isFeedbacksOpen: true, + }) }) - expect(result).toEqual({ - ...mockInitialModalState, - isFeedbacksOpen: true, + + it('should handle UPDATE_MODAL_ISFEEDBACKSOPEN without payload', () => { + const result = modalReducer(mockInitialModalState, { + type: UPDATE_MODAL_ISFEEDBACKSOPEN, + }) + expect(result).toEqual(mockInitialModalState) }) }) - it('should handle UPDATE_MODAL_ISFEEDBACKSOPEN without payload', () => { - const result = modalReducer(mockInitialModalState, { - type: UPDATE_MODAL_ISFEEDBACKSOPEN, + describe('PartnersInfo', () => { + const partnersModalAllTrue = { + egl: true, + enedis: true, + grdf: true, + } + it('should have all partners to false by default', () => { + const result = modalReducer(mockInitialModalState, { + type: null, + }) + const expectedResult: ModalState = { + ...mockInitialModalState, + partnersIssueModal: { + egl: false, + enedis: false, + grdf: false, + }, + } + expect(result).toEqual(expectedResult) + }) + it('should handle OPEN_PARTNERS_MODAL to set all partners to true', () => { + const result = modalReducer(mockInitialModalState, { + type: OPEN_PARTNERS_MODAL, + payload: { egl: true, enedis: true, grdf: true }, + }) + const expectedResult: ModalState = { + ...mockInitialModalState, + partnersIssueModal: { + ...partnersModalAllTrue, + }, + } + expect(result).toEqual(expectedResult) + }) + it('should handle OPEN_PARTNERS_MODAL to set some partners to false', () => { + const result = modalReducer( + { + ...mockInitialModalState, + partnersIssueModal: { + ...partnersModalAllTrue, + }, + }, + { + type: OPEN_PARTNERS_MODAL, + payload: { egl: true, enedis: false, grdf: false }, + } + ) + const expectedResult: ModalState = { + ...mockInitialModalState, + partnersIssueModal: { + egl: true, + enedis: false, + grdf: false, + }, + } + expect(result).toEqual(expectedResult) }) - expect(result).toEqual(mockInitialModalState) }) }) diff --git a/src/store/modal/modal.reducer.ts b/src/store/modal/modal.reducer.ts index 482be122bb3f285cc946b324309862b05900d216..9a4052a2707e675357c19ffb614fcc13aa8f9613 100644 --- a/src/store/modal/modal.reducer.ts +++ b/src/store/modal/modal.reducer.ts @@ -2,17 +2,23 @@ import { ModalState } from 'models' import { Reducer } from 'redux' import { ModalActionTypes, + OPEN_PARTNERS_MODAL, UPDATE_MODAL_ISFEEDBACKSOPEN, } from 'store/modal/modal.actions' const initialState: ModalState = { isFeedbacksOpen: false, + partnersIssueModal: { + enedis: false, + egl: false, + grdf: false, + }, } -export const modalReducer: Reducer<ModalState> = ( +export const modalReducer: Reducer<ModalState, ModalActionTypes> = ( state = initialState, - action: ModalActionTypes -): ModalState => { + action +) => { switch (action.type) { case UPDATE_MODAL_ISFEEDBACKSOPEN: const isOpen = @@ -21,6 +27,13 @@ export const modalReducer: Reducer<ModalState> = ( ...state, isFeedbacksOpen: isOpen, } + case OPEN_PARTNERS_MODAL: + return action.payload != undefined + ? { + ...state, + partnersIssueModal: action.payload, + } + : state default: return state } diff --git a/tests/__mocks__/globalStateData.mock.ts b/tests/__mocks__/globalStateData.mock.ts index f49b200e9c1ce1cca8c376b29a2a69e002a43fdf..a657805557f7463252c28dbe1f125f54bba01992 100644 --- a/tests/__mocks__/globalStateData.mock.ts +++ b/tests/__mocks__/globalStateData.mock.ts @@ -1,3 +1,4 @@ +/* eslint-disable camelcase */ import { FluidState, FluidType } from 'enum/fluid.enum' import { FluidSlugType } from 'enum/fluidSlug.enum' import { ScreenType } from 'enum/screen.enum' @@ -17,10 +18,11 @@ export const globalStateData: GlobalState = { accepted: false, versionType: 'major', }, - openPartnersIssueModal: { - enedis: false, - egl: false, - grdf: false, + partnersInfo: { + egl_failure: false, + enedis_failure: false, + grdf_failure: false, + notification_activated: false, }, fluidStatus: [ { diff --git a/tests/__mocks__/store.ts b/tests/__mocks__/store.ts index 20953e36beef7fe908cebec9ba8d9dbc82442887..abcba7ea2ff91dc213d64c285e7fd759ad841552 100644 --- a/tests/__mocks__/store.ts +++ b/tests/__mocks__/store.ts @@ -46,10 +46,11 @@ export const mockInitialGlobalState: GlobalState = { description: '', endDate: '', }, - openPartnersIssueModal: { - enedis: false, - egl: false, - grdf: false, + partnersInfo: { + egl_failure: false, + enedis_failure: false, + grdf_failure: false, + notification_activated: false, }, releaseNotes: { show: false, @@ -278,6 +279,11 @@ export const mockInitialChartState: ChartState = { export const mockInitialModalState: ModalState = { isFeedbacksOpen: false, + partnersIssueModal: { + enedis: false, + egl: false, + grdf: false, + }, } export const mockInitialChallengeState: ChallengeState = {