import React, { useState } from 'react' import { __ } from '@wordpress/i18n' import { createInterpolateElement } from '@wordpress/element' import { useSnippetsAPI } from '../../hooks/useSnippetsAPI' import { Button } from './Button' import { ConfirmDialog } from './ConfirmDialog' import type { Snippet } from '../../types/Snippet' import type { ButtonProps } from './Button' const TrashActiveConfirmMessage = () => <>

{createInterpolateElement( __('This snippet is currently active.', 'code-snippets'), { strong: } )}

{__('Moving it to the trash will also deactivate it.', 'code-snippets')}

const PermanentDeleteConfirmMessage = () => <>

{createInterpolateElement( __('The snippet will be permanently deleted.', 'code-snippets'), { strong: } )}

{__('This action cannot be undone.', 'code-snippets')}

export interface DeleteButtonProps extends ButtonProps { snippet: Snippet setIsWorking?: (isWorking: boolean) => void onSuccess?: () => Promise | void onError?: (error: unknown) => void } export const DeleteButton: React.FC = ({ snippet, onSuccess, onError, className = 'delete-button', setIsWorking, ...buttonProps }) => { const snippetsAPI = useSnippetsAPI() const [isDialogOpen, setIsDialogOpen] = useState(false) const handleDelete = () => { setIsWorking?.(true) snippetsAPI.delete(snippet) .then(() => onSuccess?.()) .catch((error: unknown) => onError?.(error)) .finally(() => setIsWorking?.(false)) } const handleButtonClick = () => { if (snippet.active || snippet.trashed) { setIsDialogOpen(true) } else { handleDelete() } } return ( <> setIsDialogOpen(false)} onConfirm={() => { setIsDialogOpen(false) handleDelete() }} > {snippet.trashed ? : } ) }