mirror of
https://github.com/purrgrammer/grimoire.git
synced 2026-06-05 10:11:12 +02:00
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]".
This commit is contained in:
@@ -454,7 +454,7 @@ export function CountViewer({
|
||||
<div className="border-t border-border px-4 py-3 bg-red-500/10">
|
||||
<div className="flex items-center gap-2 text-sm text-red-500">
|
||||
<AlertCircle className="size-4" />
|
||||
<span>{String(error.message || error)}</span>
|
||||
<span>{error.message || "An error occurred"}</span>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
@@ -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,
|
||||
),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user