Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
JavaScript
at master
123456789101112131415161718192021222324252627282930313233343536373839import { 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 }, };}