diff --git a/frontend/src/component/personalDashboard/PersonalDashboard.tsx b/frontend/src/component/personalDashboard/PersonalDashboard.tsx index f5eacd6176..2d94a31c34 100644 --- a/frontend/src/component/personalDashboard/PersonalDashboard.tsx +++ b/frontend/src/component/personalDashboard/PersonalDashboard.tsx @@ -107,7 +107,7 @@ const AccordionSummarySubtitle = styled(Typography)(({ theme }) => ({ })); const EventTimelinePanel = () => { - const { toggleSectionState, expandTimeline } = useDashboardState([], []); + const { toggleSectionState, expandTimeline } = useDashboardState(); const { trackEvent } = usePlausibleTracker(); const signalsLink = '/integrations/signals'; @@ -163,7 +163,7 @@ const FlagPanel = () => { const projects = personalDashboard?.projects || []; const { activeFlag, setActiveFlag, toggleSectionState, expandFlags } = - useDashboardState(projects, personalDashboard?.flags ?? []); + useDashboardState({ flags: personalDashboard?.flags ?? [] }); return ( { setActiveProject, toggleSectionState, expandProjects, - } = useDashboardState(projects, personalDashboard?.flags ?? []); + } = useDashboardState({ projects }); const personalDashboardProjectDetails = fromPersonalDashboardProjectDetailsOutput( diff --git a/frontend/src/component/personalDashboard/useDashboardState.ts b/frontend/src/component/personalDashboard/useDashboardState.ts index c9652063e3..7d89cb43d2 100644 --- a/frontend/src/component/personalDashboard/useDashboardState.ts +++ b/frontend/src/component/personalDashboard/useDashboardState.ts @@ -5,10 +5,11 @@ import type { } from 'openapi'; import { useEffect } from 'react'; -export const useDashboardState = ( - projects: PersonalDashboardSchemaProjectsItem[], - flags: PersonalDashboardSchemaFlagsItem[], -) => { +type StateProps = { + projects?: PersonalDashboardSchemaProjectsItem[]; + flags?: PersonalDashboardSchemaFlagsItem[]; +}; +export const useDashboardState = (props?: StateProps) => { type State = { activeProject: string | undefined; activeFlag: PersonalDashboardSchemaFlagsItem | undefined; @@ -35,34 +36,31 @@ export const useDashboardState = ( useEffect(() => { const updates: Partial = {}; - const setDefaultFlag = - flags.length && - (!state.activeFlag || - !flags.some((flag) => flag.name === state.activeFlag?.name)); - if (setDefaultFlag) { - updates.activeFlag = flags[0]; + if ( + props?.flags?.length && + (!state.activeFlag || + !props.flags.some( + (flag) => flag.name === state.activeFlag?.name, + )) + ) { + updates.activeFlag = props.flags[0]; } - const setDefaultProject = - projects.length && + if ( + props?.projects?.length && (!state.activeProject || - !projects.some( + !props.projects.some( (project) => project.id === state.activeProject, - )); - - if (setDefaultProject) { - updates.activeProject = projects[0].id; + )) + ) { + updates.activeProject = props.projects[0].id; } if (Object.keys(updates).length) { updateState(updates); } - }, [ - JSON.stringify(projects), - JSON.stringify(flags), - JSON.stringify(state), - ]); + }, [JSON.stringify(props), JSON.stringify(state)]); const { activeFlag, activeProject } = state;