chat / client /src /components /Prompts /DeleteVersion.tsx
helloya20's picture
Upload 2345 files
f0743f4 verified
import React, { useCallback } from 'react';
import { Trash2 } from 'lucide-react';
import { useDeletePrompt } from '~/data-provider';
import { Button, OGDialog, OGDialogTrigger, Label, OGDialogTemplate } from '@librechat/client';
import { useLocalize } from '~/hooks';
const DeleteConfirmDialog = ({
name,
disabled,
selectHandler,
}: {
name: string;
disabled?: boolean;
selectHandler: () => void;
}) => {
const localize = useLocalize();
return (
<OGDialog>
<OGDialogTrigger asChild>
<Button
variant="destructive"
size="sm"
aria-label="Delete version"
className="h-10 w-10 p-0.5"
disabled={disabled}
onClick={(e) => {
e.stopPropagation();
}}
>
<Trash2 className="size-5 cursor-pointer text-white" />
</Button>
</OGDialogTrigger>
<OGDialogTemplate
showCloseButton={false}
title={localize('com_ui_delete_prompt')}
className="max-w-[450px]"
main={
<>
<div className="flex w-full flex-col items-center gap-2">
<div className="grid w-full items-center gap-2">
<Label
htmlFor="dialog-delete-confirm-prompt"
className="text-left text-sm font-medium"
>
{localize('com_ui_delete_confirm_prompt_version_var', { 0: name })}
</Label>
</div>
</div>
</>
}
selection={{
selectHandler,
selectClasses:
'bg-surface-destructive hover:bg-surface-destructive-hover transition-colors duration-200 text-white',
selectText: localize('com_ui_delete'),
}}
/>
</OGDialog>
);
};
interface DeletePromptProps {
promptId?: string;
groupId: string;
promptName: string;
disabled: boolean;
}
const DeletePrompt = React.memo(
({ promptId, groupId, promptName, disabled }: DeletePromptProps) => {
const deletePromptMutation = useDeletePrompt();
const handleDelete = useCallback(() => {
if (!promptId) {
console.warn('No prompt ID provided for deletion');
return;
}
deletePromptMutation.mutate({
_id: promptId,
groupId,
});
}, [promptId, groupId, deletePromptMutation]);
if (!promptId) {
return null;
}
return (
<DeleteConfirmDialog
name={promptName}
disabled={disabled || !promptId}
selectHandler={handleDelete}
/>
);
},
);
DeletePrompt.displayName = 'DeletePrompt';
export default DeletePrompt;