better-chatbot / src /app /(chat) /layout.tsx
Bot
Initial commit for HF Spaces
05c5ed5
Raw
History Blame Contribute Delete
1.66 kB
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>
);
}