import { Button, Group, Modal, Stack, Text } from "@mantine/core"; import { type FC, useState } from "react"; import { useTranslation } from "react-i18next"; import { BankFeedback, type BankOperation, useBankFormFocus, useBankMutations, useBankOperation, } from "@/entities/bank-card"; import { formatDate, formatMoney } from "@/shared/lib"; type DeleteOperationProps = { operation: BankOperation; onClose: () => void }; const DeleteOperation: FC = (props) => { useBankFormFocus(); const [opened, setOpened] = useState(true); const { t } = useTranslation(); const [record, setRecord] = useState(props.operation); const [latest, setLatest] = useState(); const [error, setError] = useState(); const query = useBankOperation(record.id); const { deleteOperation } = useBankMutations(); const pending = !opened || deleteOperation.isPending || (query.isFetching && Boolean(error)); return ( !pending && setOpened(false)} title={t("bank.deleteTitle")} closeOnEscape={!pending} closeOnClickOutside={!pending} closeButtonProps={{ "aria-label": t("bank.close"), disabled: pending }} > {record.kind === "transfer" ? t("bank.deleteTransfer", { amount: formatMoney(record.amount), source: record.cardName, target: record.targetCardName, }) : t("bank.deleteHint", { kind: t(`bank.kinds.${record.kind}`), amount: formatMoney(record.amount), card: record.cardName, })} {error ? ( <> ) : null} {latest && ( <> {t("bank.versionHint", { details: `${formatDate(latest.date)} · ${formatMoney(latest.amount)} · ${latest.description ?? ""}`, })} )} ); }; export { DeleteOperation };