| 1234567891011121314151617181920212223242526272829303132 |
- "use client";
- import { useCallback, useEffect, useMemo, useState } from "react";
- import { getFlowLedger } from "@/lib/api/client";
- import type { FlowLedgerApiResponse } from "@/lib/api/types";
- import { buildFlowLedger } from "@/lib/flow-ledger/build";
- import type { FlowLedger } from "@/lib/flow-ledger/types";
- export function useFlowLedger(runId: string) {
- const [input, setInput] = useState<FlowLedgerApiResponse | null>(null);
- const [loading, setLoading] = useState(true);
- const [error, setError] = useState<string | null>(null);
- const load = useCallback(async () => {
- setLoading(true);
- setError(null);
- try {
- setInput(await getFlowLedger(runId, new URLSearchParams(window.location.search).get("debug") === "1"));
- } catch (err) {
- setError(err instanceof Error ? err.message : String(err));
- } finally {
- setLoading(false);
- }
- }, [runId]);
- useEffect(() => {
- void load();
- }, [load]);
- const ledger: FlowLedger | null = useMemo(() => (input ? buildFlowLedger(input) : null), [input]);
- return { input, ledger, loading, error, reload: load };
- }
|