"use client"; import { ChevronRight, Folder as Fd, Heart, } from "lucide-react"; 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 { actionGetUserFavorites, actionToggleFavorite } from "@/modules/folder/folder-action"; type UserFavorite = { id: number; folderId: number; folderName: string; folderCreatedAt: Date; folderTotalPairs: number; folderOwnerId: string; folderOwnerName: string | null; folderOwnerUsername: string | null; favoritedAt: Date; }; interface FavoriteCardProps { favorite: UserFavorite; onRemoveFavorite: (folderId: number) => void; } const FavoriteCard = ({ favorite, onRemoveFavorite }: FavoriteCardProps) => { const router = useRouter(); const t = useTranslations("favorites"); const [isRemoving, setIsRemoving] = useState(false); const handleRemoveFavorite = async (e: React.MouseEvent) => { e.stopPropagation(); if (isRemoving) return; setIsRemoving(true); const result = await actionToggleFavorite(favorite.folderId); if (result.success) { onRemoveFavorite(favorite.folderId); } else { toast.error(result.message); } setIsRemoving(false); }; return (
{t("folderInfo", { userName: favorite.folderOwnerName ?? favorite.folderOwnerUsername ?? t("unknownUser"), totalPairs: favorite.folderTotalPairs, })}
{t("loading")}
{t("noFavorites")}