mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-05-20 23:21:06 +00:00
1193ac64dc
* fix(frontend): resolve layout flickering by migrating workspace sidebar state to cookie * fix(frontend): unify local settings runtime state to fix state drift * fix(frontend): only persist thread model on explicit context model updates
36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
import { cookies } from "next/headers";
|
|
import { Toaster } from "sonner";
|
|
|
|
import { QueryClientProvider } from "@/components/query-client-provider";
|
|
import { SidebarInset, SidebarProvider } from "@/components/ui/sidebar";
|
|
import { CommandPalette } from "@/components/workspace/command-palette";
|
|
import { WorkspaceSidebar } from "@/components/workspace/workspace-sidebar";
|
|
|
|
function parseSidebarOpenCookie(
|
|
value: string | undefined,
|
|
): boolean | undefined {
|
|
if (value === "true") return true;
|
|
if (value === "false") return false;
|
|
return undefined;
|
|
}
|
|
|
|
export default async function WorkspaceLayout({
|
|
children,
|
|
}: Readonly<{ children: React.ReactNode }>) {
|
|
const cookieStore = await cookies();
|
|
const initialSidebarOpen = parseSidebarOpenCookie(
|
|
cookieStore.get("sidebar_state")?.value,
|
|
);
|
|
|
|
return (
|
|
<QueryClientProvider>
|
|
<SidebarProvider className="h-screen" defaultOpen={initialSidebarOpen}>
|
|
<WorkspaceSidebar />
|
|
<SidebarInset className="min-w-0">{children}</SidebarInset>
|
|
</SidebarProvider>
|
|
<CommandPalette />
|
|
<Toaster position="top-center" />
|
|
</QueryClientProvider>
|
|
);
|
|
}
|