import { useCallback, useState } from "react"; import { type AsyncOp, Failure, Pending, Success } from "./async-op.js"; export function useAsyncOp() { const [op, setOp] = useState>(new Pending()); const setSuccess = useCallback((value: T) => { setOp(new Success(value)); }, []); const setFailure = useCallback((failure: E) => { setOp(new Failure(failure)); }, []); return { op, setSuccess, setFailure }; }