fix: server data is loaded on settings page #363 (#414)

This commit is contained in:
Meier Lukas
2024-05-01 21:57:24 +02:00
committed by GitHub
parent 84801d3174
commit 7c98b65401
4 changed files with 16 additions and 2 deletions

View File

@@ -26,6 +26,7 @@ export const createBoardContentPage = <
layout: createBoardLayout({ layout: createBoardLayout({
headerActions: <BoardContentHeaderActions />, headerActions: <BoardContentHeaderActions />,
getInitialBoard, getInitialBoard,
isBoardContentPage: true,
}), }),
page: () => { page: () => {
return <ClientBoard />; return <ClientBoard />;

View File

@@ -8,4 +8,5 @@ export default createBoardLayout<{ locale: string; name: string }>({
async getInitialBoard({ name }) { async getInitialBoard({ name }) {
return await api.board.getBoardByName({ name }); return await api.board.getBoardByName({ name });
}, },
isBoardContentPage: false,
}); });

View File

@@ -17,11 +17,13 @@ import { BoardMantineProvider } from "./(content)/_theme";
interface CreateBoardLayoutProps<TParams extends Params> { interface CreateBoardLayoutProps<TParams extends Params> {
headerActions: JSX.Element; headerActions: JSX.Element;
getInitialBoard: (params: TParams) => Promise<Board>; getInitialBoard: (params: TParams) => Promise<Board>;
isBoardContentPage: boolean;
} }
export const createBoardLayout = <TParams extends Params>({ export const createBoardLayout = <TParams extends Params>({
headerActions, headerActions,
getInitialBoard, getInitialBoard,
isBoardContentPage,
}: CreateBoardLayoutProps<TParams>) => { }: CreateBoardLayoutProps<TParams>) => {
const Layout = async ({ const Layout = async ({
params, params,
@@ -39,7 +41,10 @@ export const createBoardLayout = <TParams extends Params>({
}); });
return ( return (
<GlobalItemServerDataRunner board={initialBoard}> <GlobalItemServerDataRunner
board={initialBoard}
shouldRun={isBoardContentPage}
>
<BoardProvider initialBoard={initialBoard}> <BoardProvider initialBoard={initialBoard}>
<BoardMantineProvider> <BoardMantineProvider>
<ClientShell hasNavigation={false}> <ClientShell hasNavigation={false}>

View File

@@ -10,10 +10,17 @@ import { GlobalItemServerDataProvider } from "./provider";
type Board = RouterOutputs["board"]["getDefaultBoard"]; type Board = RouterOutputs["board"]["getDefaultBoard"];
type Props = PropsWithChildren<{ type Props = PropsWithChildren<{
shouldRun: boolean;
board: Board; board: Board;
}>; }>;
export const GlobalItemServerDataRunner = ({ board, children }: Props) => { export const GlobalItemServerDataRunner = ({
board,
shouldRun,
children,
}: Props) => {
if (!shouldRun) return children;
const allItems = board.sections.flatMap((section) => section.items); const allItems = board.sections.flatMap((section) => section.items);
return ( return (