- 修复 folder-aciton.ts 文件名拼写错误为 folder-action.ts - 修复所有导入路径中的拼写错误 - 添加 repoGetPublicFolderById 和 actionGetPublicFolderById - 创建 ExploreDetailClient 详情页组件 - /explore/[id] 现在显示文件夹详情和链接到 /folders/[id] - 添加 exploreDetail 中英文翻译
38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
import { redirect } from "next/navigation";
|
|
import { getTranslations } from "next-intl/server";
|
|
import { isNonNegativeInteger } from "@/utils/random";
|
|
import { FolderSelector } from "./FolderSelector";
|
|
import { Memorize } from "./Memorize";
|
|
import { auth } from "@/auth";
|
|
import { headers } from "next/headers";
|
|
import { actionGetFoldersWithTotalPairsByUserId, actionGetPairsByFolderId } from "@/modules/folder/folder-action";
|
|
|
|
export default async function MemorizePage({
|
|
searchParams,
|
|
}: {
|
|
searchParams: Promise<{ folder_id?: string; }>;
|
|
}) {
|
|
const tParam = (await searchParams).folder_id;
|
|
|
|
const t = await getTranslations("memorize.page");
|
|
|
|
const folder_id = tParam
|
|
? isNonNegativeInteger(tParam)
|
|
? parseInt(tParam)
|
|
: null
|
|
: null;
|
|
|
|
if (!folder_id) {
|
|
const session = await auth.api.getSession({ headers: await headers() });
|
|
if (!session) redirect("/login?redirect=/memorize");
|
|
|
|
return (
|
|
<FolderSelector
|
|
folders={(await actionGetFoldersWithTotalPairsByUserId(session.user.id)).data!}
|
|
/>
|
|
);
|
|
}
|
|
|
|
return <Memorize textPairs={(await actionGetPairsByFolderId(folder_id)).data!} />;
|
|
}
|