"use client";
import {
ChevronRight,
Folder as Fd,
FolderPen,
FolderPlus,
Trash2,
} from "lucide-react";
import { useEffect, useState } from "react";
import { useRouter } from "next/navigation";
import { Folder } from "../../../generated/prisma/browser";
import {
createFolder,
deleteFolderById,
getFoldersWithTotalPairsByUserId,
renameFolderById,
} from "@/lib/server/services/folderService";
import { useTranslations } from "next-intl";
import { toast } from "sonner";
import PageLayout from "@/components/ui/PageLayout";
import PageHeader from "@/components/ui/PageHeader";
import CardList from "@/components/ui/CardList";
interface FolderProps {
folder: Folder & { total: number };
refresh: () => void;
}
const FolderCard = ({ folder, refresh }: FolderProps) => {
const router = useRouter();
const t = useTranslations("folders");
return (
{
router.push(`/folders/${folder.id}`);
}}
>
{folder.name}
{t("folderInfo", {
id: folder.id,
name: folder.name,
totalPairs: folder.total,
})}
);
};
export default function FoldersClient({ userId }: { userId: string }) {
const t = useTranslations("folders");
const [folders, setFolders] = useState<(Folder & { total: number })[]>(
[],
);
const [loading, setLoading] = useState(false);
useEffect(() => {
setLoading(true);
getFoldersWithTotalPairsByUserId(userId)
.then((folders) => {
setFolders(folders);
setLoading(false);
})
.catch((error) => {
console.error(error);
toast.error("加载出错,请重试。");
});
}, [userId]);
const updateFolders = async () => {
try {
const updatedFolders = await getFoldersWithTotalPairsByUserId(userId);
setFolders(updatedFolders);
} catch (error) {
console.error(error);
}
};
return (
{/* 新建文件夹按钮 */}
{/* 文件夹列表 */}
{folders.length === 0 ? (
// 空状态
) : (
// 文件夹卡片列表
{folders
.toSorted((a, b) => a.id - b.id)
.map((folder) => (
))}
)}
);
}