"use client"; import { ArrowLeft, Plus } from "lucide-react"; import { Center } from "@/components/Center"; import { useEffect, useState } from "react"; import { redirect, useRouter } from "next/navigation"; import Container from "@/components/cards/Container"; import { createTextPair, deleteTextPairById, getTextPairsByFolderId, } from "@/lib/services/textPairService"; import AddTextPairModal from "./AddTextPairModal"; import TextPairCard from "./TextPairCard"; import LightButton from "@/components/buttons/LightButton"; import { useTranslations } from "next-intl"; import { toast } from "sonner"; export interface TextPair { id: number; text1: string; text2: string; locale1: string; locale2: string; } export default function InFolder({ folderId }: { folderId: number }) { const [textPairs, setTextPairs] = useState([]); const [loading, setLoading] = useState(true); const [openAddModal, setAddModal] = useState(false); const router = useRouter(); const t = useTranslations("folders.folder_id"); useEffect(() => { const fetchTextPairs = async () => { setLoading(true); try { const data = await getTextPairsByFolderId(folderId); setTextPairs(data as TextPair[]); } catch (error) { console.error("Failed to fetch text pairs:", error); } finally { setLoading(false); } }; fetchTextPairs(); }, [folderId]); const refreshTextPairs = async () => { setLoading(true); try { const data = await getTextPairsByFolderId(folderId); setTextPairs(data as TextPair[]); } catch (error) { console.error("Failed to fetch text pairs:", error); } finally { setLoading(false); } }; return (

{t("textPairs")}

{t("itemsCount", { count: textPairs.length })}

{ redirect(`/memorize?folder_id=${folderId}`); }} > {t("memorize")}
{loading ? (

{t("loadingTextPairs")}

) : textPairs.length === 0 ? (

{t("noTextPairs")}

) : (
{textPairs.map((textPair) => ( { deleteTextPairById(textPair.id); refreshTextPairs(); }} refreshTextPairs={refreshTextPairs} /> ))}
)}
setAddModal(false)} onAdd={async ( text1: string, text2: string, locale1: string, locale2: string, ) => { await createTextPair({ text1: text1, text2: text2, locale1: locale1, locale2: locale2, folders: { connect: { id: folderId, }, }, }); refreshTextPairs(); }} />
); }