"use client"; import { ChevronRight, Folder as Fd, Heart, Search, } from "lucide-react"; import { CircleButton } from "@/design-system/base/button"; import { useEffect, useState } from "react"; import { useRouter } from "next/navigation"; 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"; import { actionSearchPublicFolders, actionToggleFavorite, actionCheckFavorite, } from "@/modules/folder/folder-aciton"; import { TPublicFolder } from "@/shared/folder-type"; import { authClient } from "@/lib/auth-client"; interface PublicFolderCardProps { folder: TPublicFolder; currentUserId?: string; onFavoriteChange?: () => void; } const PublicFolderCard = ({ folder, currentUserId, onFavoriteChange }: PublicFolderCardProps) => { const router = useRouter(); const t = useTranslations("explore"); const [isFavorited, setIsFavorited] = useState(false); const [favoriteCount, setFavoriteCount] = useState(folder.favoriteCount); useEffect(() => { if (currentUserId) { actionCheckFavorite(folder.id).then((result) => { if (result.success && result.data) { setIsFavorited(result.data.isFavorited); setFavoriteCount(result.data.favoriteCount); } }); } }, [folder.id, currentUserId]); const handleToggleFavorite = async (e: React.MouseEvent) => { e.stopPropagation(); if (!currentUserId) { toast.error(t("pleaseLogin")); return; } const result = await actionToggleFavorite(folder.id); if (result.success && result.data) { setIsFavorited(result.data.isFavorited); setFavoriteCount(result.data.favoriteCount); onFavoriteChange?.(); } else { toast.error(result.message); } }; return (
{t("folderInfo", { userName: folder.userName ?? folder.userUsername ?? t("unknownUser"), totalPairs: folder.totalPairs, })}
{t("loading")}
{t("noFolders")}