ai-chatbot/app/(chat)/page.tsx
Your Name 77a32a4d60
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled
perf: isolate lovart home route
2026-04-30 00:41:37 +08:00

62 lines
1.9 KiB
TypeScript

import { redirect } from "next/navigation";
import { Suspense } from "react";
import { LovartHome } from "@/components/home/lovart-home";
import { auth } from "../(auth)/auth";
import {
getSiteSettings,
getSystemSetting,
} from "@/lib/db/queries";
export default function Page() {
return (
<Suspense fallback={<div className="flex h-dvh" />}>
<NewChatPage />
</Suspense>
);
}
async function NewChatPage() {
const [session, siteSettings, homeVariantSetting, surpriseCategoriesSetting] =
await Promise.all([
auth(),
getSiteSettings(),
getSystemSetting({ key: "home_variant" }).catch(() => undefined),
getSystemSetting({ key: "home_surprise_categories" }).catch(() => undefined),
]);
const homeVariant = homeVariantSetting?.value === "lovart" ? "lovart" : "classic";
const surpriseCategories = Array.isArray(surpriseCategoriesSetting?.value)
? surpriseCategoriesSetting?.value
.map((item: unknown) => String(item || "").trim())
.filter(Boolean)
: ["全部", "精选"];
if (homeVariant !== "lovart") {
redirect("/classic");
}
return (
<LovartHome
user={
session?.user
? {
id: session.user.id,
email: session.user.email,
name: session.user.name,
type: session.user.type,
}
: null
}
isAuthenticated={Boolean(session?.user && session.user.type !== "guest")}
siteName={siteSettings.siteName || "AI Chatbot"}
siteLogo={siteSettings.siteLogo || ""}
siteLogoDark={siteSettings.siteLogoDark || ""}
surpriseCategories={surpriseCategories}
heroPromoText={siteSettings.lovartPromoText}
heroPromoActionText={siteSettings.lovartPromoActionText}
heroTitleText={siteSettings.lovartHeroTitle}
heroSubtitleText={siteSettings.lovartHeroSubtitle}
/>
);
}