import React, { useEffect, useState } from "react"; import TextInput from "@/components/TextInput"; import { CollectionIncludingMembersAndLinkCount } from "@/types/global"; import { useRouter } from "next/router"; import usePermissions from "@/hooks/usePermissions"; import Modal from "../Modal"; import Button from "../ui/Button"; import { useTranslation } from "next-i18next"; import { useDeleteCollection } from "@/hooks/store/collections"; import toast from "react-hot-toast"; type Props = { onClose: Function; activeCollection: CollectionIncludingMembersAndLinkCount; }; export default function DeleteCollectionModal({ onClose, activeCollection, }: Props) { const { t } = useTranslation(); const [collection, setCollection] = useState(activeCollection); const [submitLoader, setSubmitLoader] = useState(false); const router = useRouter(); const [inputField, setInputField] = useState(""); const permissions = usePermissions(collection.id as number); useEffect(() => { setCollection(activeCollection); }, []); const deleteCollection = useDeleteCollection(); const submit = async () => { if (permissions === true && collection.name !== inputField) return; if (!submitLoader) { setSubmitLoader(true); if (!collection) return null; setSubmitLoader(true); const load = toast.loading(t("deleting_collection")); deleteCollection.mutateAsync(collection.id as number, { onSettled: (data, error) => { toast.dismiss(load); if (error) { toast.error(error.message); } else { onClose(); router.push("/collections"); toast.success(t("deleted")); } }, }); setSubmitLoader(false); } }; return (

{permissions === true ? t("delete_collection") : t("leave_collection")}

{permissions === true ? ( <>

{t("confirm_deletion_prompt", { name: collection.name })}

setInputField(e.target.value)} placeholder={t("type_name_placeholder", { name: collection.name, })} className="w-3/4 mx-auto" />
{t("warning")}: {t("deletion_warning")}
) : (

{t("leave_prompt")}

)}
); }