Spaces:
Sleeping
Sleeping
File size: 1,662 Bytes
05c5ed5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | import { SidebarProvider } from "ui/sidebar";
import { AppSidebar } from "@/components/layouts/app-sidebar";
import { AppHeader } from "@/components/layouts/app-header";
import { cookies } from "next/headers";
import { getSession } from "lib/auth/server";
import { COOKIE_KEY_SIDEBAR_STATE } from "lib/const";
import { AppPopupProvider } from "@/components/layouts/app-popup-provider";
import { SWRConfigProvider } from "./swr-config";
import { UserDetailContent } from "@/components/user/user-detail/user-detail-content";
import { UserDetailContentSkeleton } from "@/components/user/user-detail/user-detail-content-skeleton";
import { Suspense } from "react";
import { redirect } from "next/navigation";
export const experimental_ppr = true;
export default async function ChatLayout({
children,
}: { children: React.ReactNode }) {
const cookieStore = await cookies();
const session = await getSession();
if (!session) {
redirect("/sign-in");
}
const isCollapsed =
cookieStore.get(COOKIE_KEY_SIDEBAR_STATE)?.value !== "true";
return (
<SidebarProvider defaultOpen={!isCollapsed}>
<SWRConfigProvider user={session.user}>
<AppPopupProvider
userSettingsComponent={
<Suspense fallback={<UserDetailContentSkeleton />}>
<UserDetailContent view="user" />
</Suspense>
}
/>
<AppSidebar user={session.user} />
<main className="relative bg-background w-full flex flex-col h-screen">
<AppHeader />
<div className="flex-1 overflow-y-auto">{children}</div>
</main>
</SWRConfigProvider>
</SidebarProvider>
);
}
|