Skip to content

Commit

Permalink
review: move logic into use-case
Browse files Browse the repository at this point in the history
  • Loading branch information
maximeperrault committed Oct 14, 2024
1 parent d9e49fb commit 2dd5df7
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ import { useAppSelector } from '@hooks/useAppSelector'
import { Accent, Button, Icon } from '@mtes-mct/monitor-ui'
import styled from 'styled-components'

import type { Dashboard } from '@features/Dashboard/types'

export function Footer() {
const dispatch = useAppDispatch()
const activeDashboardId = useAppSelector(state => state.dashboard.activeDashboardId)
Expand All @@ -15,19 +13,14 @@ export function Footer() {
if (!dashboardForm) {
return null
}
const dashboardToSave: Dashboard.DashboardToApi = {
...dashboardForm.dashboard,
id: dashboardForm.dashboard.id?.includes('new-') ? undefined : dashboardForm.dashboard.id,
reportings: dashboardForm.dashboard.reportings.map(reporting => +reporting.id)
}

return (
<Wrapper>
<SaveButton
accent={Accent.SECONDARY}
disabled={!activeDashboardId}
Icon={Icon.Save}
onClick={() => dispatch(saveDashboard(dashboardToSave))}
onClick={() => dispatch(saveDashboard(dashboardForm.dashboard))}
>
Enregistrer le tableau
</SaveButton>
Expand Down
23 changes: 6 additions & 17 deletions frontend/src/features/Dashboard/slice.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { getFilterVigilanceAreasPerPeriod } from '@features/layersSelector/utils/getFilteredVigilanceAreasPerPeriod'
import { VigilanceArea } from '@features/VigilanceArea/types'
import { customDayjs, type DateAsStringRange } from '@mtes-mct/monitor-ui'
import { type DateAsStringRange } from '@mtes-mct/monitor-ui'
import { createSelector, createSlice, type PayloadAction } from '@reduxjs/toolkit'
import { isGeometryValid } from '@utils/geometryValidation'
import { ReportingDateRangeEnum } from 'domain/entities/dateRange'
Expand Down Expand Up @@ -177,24 +177,13 @@ export const dashboardSlice = createSlice({

createDashboard(
state,
action: PayloadAction<{ extractedArea: Dashboard.ExtractedArea; geom: GeoJSON.Geometry; id: string }>
action: PayloadAction<{ dashboard: Dashboard.Dashboard; extractedArea: Dashboard.ExtractedArea }>
) {
state.activeDashboardId = action.payload.id
const date = customDayjs().format('DD/MM/YYYY')
const newDashboardName = `Tab ${date}`
state.dashboards[action.payload.id] = {
state.activeDashboardId = action.payload.dashboard.id

state.dashboards[action.payload.dashboard.id] = {
...initialDashboard,
dashboard: {
amps: [],
controlUnits: [],
geom: action.payload.geom,
id: action.payload.id,
inseeCode: action.payload.extractedArea.inseeCode,
name: newDashboardName,
regulatoryAreas: [],
reportings: [],
vigilanceAreas: []
},
dashboard: action.payload.dashboard,
extractedArea: action.payload.extractedArea
}
},
Expand Down
17 changes: 15 additions & 2 deletions frontend/src/features/Dashboard/useCases/createDashboard.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { dashboardsAPI } from '@api/dashboardsAPI'
import { addMainWindowBanner } from '@features/MainWindow/useCases/addMainWindowBanner'
import { sideWindowActions } from '@features/SideWindow/slice'
import { Level } from '@mtes-mct/monitor-ui'
import { customDayjs, Level } from '@mtes-mct/monitor-ui'
import { sideWindowPaths } from 'domain/entities/sideWindow'
import { generatePath } from 'react-router'

Expand All @@ -20,7 +20,20 @@ export const createDashboard =
if (data) {
dispatch(closeDrawDashboard())
const newId = `new-${Object.keys(getState().dashboard.dashboards).length}`
dispatch(dashboardActions.createDashboard({ extractedArea: data, geom: geometry, id: newId }))
const date = customDayjs().format('DD/MM/YYYY')
const newDashboardName = `Tab ${date}`
const dashboard = {
amps: [],
controlUnits: [],
geom: geometry,
id: newId,
inseeCode: data.inseeCode,
name: newDashboardName,
regulatoryAreas: [],
reportings: [],
vigilanceAreas: []
}
dispatch(dashboardActions.createDashboard({ dashboard, extractedArea: data }))
dispatch(sideWindowActions.focusAndGoTo(generatePath(sideWindowPaths.DASHBOARD, { id: newId })))
}
if (error) {
Expand Down
9 changes: 7 additions & 2 deletions frontend/src/features/Dashboard/useCases/saveDashboard.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,14 @@ import type { HomeAppThunk } from '@store/index'
export const SAVE_DASHBOARD_ERROR_MESSAGE = "Nous n'avons pas pu enregistrer le tableau de bord"

export const saveDashboard =
(dashboard: Dashboard.DashboardToApi): HomeAppThunk =>
(dashboard: Dashboard.Dashboard): HomeAppThunk =>
async dispatch => {
const { data, error } = await dispatch(dashboardsAPI.endpoints.save.initiate(dashboard))
const dashboardToSave: Dashboard.DashboardToApi = {
...dashboard,
id: dashboard.id?.includes('new-') ? undefined : dashboard.id,
reportings: dashboard.reportings.map(reporting => +reporting.id)
}
const { data, error } = await dispatch(dashboardsAPI.endpoints.save.initiate(dashboardToSave))
if (data) {
dispatch(dashboardActions.updateDashboard({ dashboard: data }))
dispatch(dashboardActions.setBanner(true))
Expand Down

0 comments on commit 2dd5df7

Please sign in to comment.