Skip to content

Commit

Permalink
Extract setLayoutParameters
Browse files Browse the repository at this point in the history
Set layout for general pages
Avoid re-setting data to equal value
  • Loading branch information
RoyEJohnson committed Aug 20, 2024
1 parent cc7025f commit b5a9ebb
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 10 deletions.
1 change: 1 addition & 0 deletions src/app/components/shell/router-helpers/fallback-to.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,6 @@ export default function FallbackTo({name, setLayoutParameters}) {
return <FlexPage data={data} />;
}

setLayoutParameters({data: undefined, name: 'default'});
return <FallbackToGeneralPage name={name} />;
}
18 changes: 18 additions & 0 deletions src/app/components/shell/router-helpers/use-layout-parameters.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import React from 'react';

export default function useLayoutParameters() {
const [layoutName, setLayoutName] = React.useState('default');
const [layoutData, setLayoutData] = React.useState<unknown>(undefined);
const setLayoutParameters = React.useCallback(
// eslint-disable-next-line no-shadow
({name, data}: { name: string; data: unknown;}) => {
setLayoutName(name);
if (JSON.stringify(data) !== JSON.stringify(layoutData)) {
setLayoutData(data);
}
},
[layoutData]
);

return {layoutName, layoutData, setLayoutParameters};
}
12 changes: 2 additions & 10 deletions src/app/components/shell/router.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import useLinkHandler from './router-helpers/use-link-handler';
import useRouterContext, {RouterContextProvider} from './router-context';
import loadable from 'react-loadable';
import LoadingPlaceholder from '~/components/loading-placeholder/loading-placeholder';
import useLayoutParameters from './router-helpers/use-layout-parameters';
import './skip-to-content.scss';

function useAnalyticsPageView() {
Expand Down Expand Up @@ -73,23 +74,14 @@ function usePage(name, setLayoutParameters) {

function ImportedPage({name}) {
const {pathname} = useLocation();
const [layoutName, setLayoutName] = React.useState('default');
const [layoutData, setLayoutData] = React.useState(undefined);
const {layoutName, layoutData, setLayoutParameters} = useLayoutParameters();
const LoadableLayout = React.useMemo(
() => loadable({
loader: () => import(`~/layouts/${layoutName}/${layoutName}`),
loading: LoadingPlaceholder
}),
[layoutName]
);
const setLayoutParameters = React.useCallback(
// eslint-disable-next-line no-shadow
({name, data}) => {
setLayoutName(name);
setLayoutData(data);
},
[]
);
const Page = usePage(name, setLayoutParameters);

useAnalyticsPageView();
Expand Down

0 comments on commit b5a9ebb

Please sign in to comment.