import { Button, Modal, Tooltip, Typography, message, theme } from 'antd';
import { type ReactNode, useState } from 'react';
import { ApiError } from '../../api/client';
import { removeFile } from '../../services/api/files';
import type { DocumentRow } from './documentRows';
const { Text } = Typography;
const OptionCard = ({ title, detail, action }: { title: string; detail: string; action: ReactNode }) => {
const { token } = theme.useToken();
return (
{title}
{detail}
{action}
);
};
type DeleteReasonModalProps = {
targetRow: DocumentRow;
open: boolean;
onCancel: () => void;
/** файл удалён — обновить список */
onDelete: () => void;
onReplace: () => void;
/** замена = загрузка нового файла: только в версии в работе, как кнопка «Загрузить документы» */
canReplace: boolean;
};
/** Удаление или замена — файлом целиком (`DELETE /files/{file_id}`): уходят все документы файла. */
export default function DeleteReasonModal({ targetRow, open, onCancel, onDelete, onReplace, canReplace }: DeleteReasonModalProps) {
const [isDeleting, setIsDeleting] = useState(false);
const handleDelete = async () => {
setIsDeleting(true);
try {
await removeFile(targetRow.fileId);
message.success('Файл удалён');
onDelete();
} catch (e: unknown) {
// 409 — например, в файле подтверждённый документ; сервер объясняет причину
message.error(e instanceof ApiError ? e.message : 'Не удалось удалить файл');
} finally {
setIsDeleting(false);
}
};
return (
Выберите причину удаления документа «{targetRow.name}»
Будет удален/заменён сам файл и все его документы
Удалить
}
/>
}
/>
);
}