diff --git a/src/components/CountViewer.tsx b/src/components/CountViewer.tsx index 3608d8f..94832df 100644 --- a/src/components/CountViewer.tsx +++ b/src/components/CountViewer.tsx @@ -454,7 +454,7 @@ export function CountViewer({
- {String(error.message || error)} + {error.message || "An error occurred"}
)} diff --git a/src/hooks/useCountQuery.ts b/src/hooks/useCountQuery.ts index 579054a..bac5b03 100644 --- a/src/hooks/useCountQuery.ts +++ b/src/hooks/useCountQuery.ts @@ -106,16 +106,36 @@ export function useCountQuery( return updated; }); }, - error: (err: Error) => { + error: (err: any) => { console.error("COUNT: Error", err); - setError(err); + + // Extract meaningful error message from various error types + let errorMessage = "Unknown error"; + if (err instanceof Error) { + errorMessage = err.message; + } else if (err && typeof err === "object") { + if ("message" in err && typeof err.message === "string") { + errorMessage = err.message; + } else if ("type" in err) { + // WebSocket Event objects + errorMessage = `Connection ${err.type}`; + } else if ("reason" in err && typeof err.reason === "string") { + errorMessage = err.reason; + } else { + errorMessage = JSON.stringify(err); + } + } else if (typeof err === "string") { + errorMessage = err; + } + + setError(new Error(errorMessage)); setLoading(false); // Mark all still-loading relays as errored setResults((prev) => prev.map((r) => r.status === "loading" - ? { ...r, status: "error" as CountStatus, error: err.message } + ? { ...r, status: "error" as CountStatus, error: errorMessage } : r, ), );