From aac789f788c8eb0275201a895926c19625b2b54f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguy=E1=BB=85n=20Ho=C3=A0ng=20=C4=90=E1=BB=A9c?= Date: Wed, 24 Apr 2024 19:32:00 +0700 Subject: [PATCH] fix(web): handle non-http client side page error (#8901) handle non-http client side page error --- web/src/hooks.client.ts | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/web/src/hooks.client.ts b/web/src/hooks.client.ts index f30e3ee8ca4a3..e78f21a5f2801 100644 --- a/web/src/hooks.client.ts +++ b/web/src/hooks.client.ts @@ -1,10 +1,9 @@ -import { isHttpError } from '@immich/sdk'; +import { isHttpError, type ApiHttpError } from '@immich/sdk'; import type { HandleClientError } from '@sveltejs/kit'; const DEFAULT_MESSAGE = 'Hmm, not sure about that. Check the logs or open a ticket?'; -const parseError = (error: unknown) => { - const httpError = isHttpError(error) ? error : undefined; +const parseHTTPError = (httpError: ApiHttpError) => { const statusCode = httpError?.status || httpError?.data?.statusCode || 500; const message = httpError?.data?.message || (httpError?.data && String(httpError.data)) || httpError?.message; @@ -20,8 +19,19 @@ const parseError = (error: unknown) => { }; }; -export const handleError: HandleClientError = ({ error }) => { - const result = parseError(error); +const parseError = (error: unknown, status: number, message: string) => { + if (isHttpError(error)) { + return parseHTTPError(error); + } + + return { + message: message || DEFAULT_MESSAGE, + code: status, + }; +}; + +export const handleError: HandleClientError = ({ error, status, message }) => { + const result = parseError(error, status, message); console.error(`[hooks.client.ts]:handleError ${result.message}`); return result; };