From cad9f011a5128805fb142540f544d403454bfc27 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 23 Dec 2025 07:13:06 +0000 Subject: [PATCH] fix: improve error message extraction in COUNT queries Replace generic "[object Event]" errors with meaningful messages by: - Detecting and extracting messages from Error objects - Handling WebSocket Event objects (extract type: "Connection error") - Handling CloseEvent objects (extract reason) - Supporting string errors - Falling back to JSON.stringify for unknown objects - Always creating proper Error instances with extracted message Now errors show actual context like "Connection error", "Connection close", or specific error messages instead of "[object Event]". --- src/components/CountViewer.tsx | 2 +- src/hooks/useCountQuery.ts | 26 +++++++++++++++++++++++--- 2 files changed, 24 insertions(+), 4 deletions(-) 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, ), );