import { useRef, useState } from "react";
import { Loader2, RotateCcw } from "lucide-react";
import { Button } from "@/components/ui/button";
import { useCurrentWorkspaceRetry } from "./WorkspaceBaseRefRecovery";
export function WorkspaceRetryControl() {
const retry = useCurrentWorkspaceRetry();
return retry ? : null;
}
export function WorkspaceRetryButton({ onRetry, unavailableReason }: {
onRetry: () => Promise;
unavailableReason: string | null;
}) {
const inFlight = useRef(false);
const [pending, setPending] = useState(false);
const [requested, setRequested] = useState(false);
const [error, setError] = useState(null);
async function retry() {
if (inFlight.current || requested || unavailableReason) return;
inFlight.current = true;
setPending(true);
setError(null);
try { await onRetry(); setRequested(true); }
catch (cause) { setError(cause instanceof Error ? cause.message : "Couldn’t retry. Try again."); }
finally { inFlight.current = false; setPending(false); }
}
return
{error ?
{error}
: null}
;
}