import { useRef, useState } from "react"; export function useConfirmation() { const [request, setRequest] = useState(null); const [busy, setBusy] = useState(false); const [error, setError] = useState(""); const running = useRef(false); function confirm(action) { setError(""); setRequest(action); } function close() { if (!running.current) setRequest(null); } async function accept() { if (!request || running.current) return; running.current = true; setBusy(true); setError(""); try { await request.action(); setRequest(null); } catch (failure) { setError(failure.message); } finally { running.current = false; setBusy(false); } } return { confirm, dialogProps: { request, busy, error, onClose: close, onAccept: accept }, }; }