memos/web/src/lib/error.ts
2026-07-18 11:20:15 +08:00

44 lines
1.1 KiB
TypeScript

import { ConnectError } from "@connectrpc/connect";
export function getErrorMessage(error: unknown, fallback = "Unknown error"): string {
if (error instanceof ConnectError) {
return error.rawMessage || fallback;
}
if (error instanceof Error) {
return error.message;
}
if (typeof error === "string") {
return error;
}
if (error && typeof error === "object" && "message" in error) {
return String(error.message);
}
return fallback;
}
export function handleError(
error: unknown,
toast: (message: string) => void,
options?: {
context?: string;
fallbackMessage?: string;
onError?: (error: unknown) => void;
},
): void {
const contextPrefix = options?.context ? `${options.context}: ` : "";
const fallback = options?.fallbackMessage;
const errorMessage = options?.context ? `${contextPrefix}${getErrorMessage(error, fallback)}` : getErrorMessage(error, fallback);
console.error(error);
toast(errorMessage);
options?.onError?.(error);
}
export function isError(value: unknown): value is Error {
return value instanceof Error;
}