diff --git a/web/src/hooks.server.ts b/web/src/hooks.server.ts index 6abd4a2f21..809e3b0c3d 100644 --- a/web/src/hooks.server.ts +++ b/web/src/hooks.server.ts @@ -3,6 +3,8 @@ import type { Handle, HandleServerError } from '@sveltejs/kit'; import type { AxiosError, AxiosResponse } from 'axios'; import { ImmichApi } from './api/api'; +const LOG_PREFIX = '[hooks.server.ts]'; + export const handle = (async ({ event, resolve }) => { const basePath = env.PUBLIC_IMMICH_SERVER_URL || 'http://immich-server:3001'; const accessToken = event.cookies.get('immich_access_token'); @@ -16,11 +18,14 @@ export const handle = (async ({ event, resolve }) => { const { data: user } = await api.userApi.getMyUserInfo(); event.locals.user = user; } catch (err) { - const apiError = err as AxiosError; + console.log(`${LOG_PREFIX} Unable to get my user`, parseError(err)); + const apiError = err as AxiosError; // Ignore 401 unauthorized errors and log all others. - if (apiError.response?.status !== 401) { - console.error('[ERROR] hooks.server.ts [handle]:', err); + if (apiError.response?.status && apiError.response?.status !== 401) { + console.error(`${LOG_PREFIX}:handle`, err); + } else if (!apiError.response?.status) { + console.error(`${LOG_PREFIX}:handle`, apiError?.message); } } } @@ -36,8 +41,9 @@ export const handle = (async ({ event, resolve }) => { const DEFAULT_MESSAGE = 'Hmm, not sure about that. Check the logs or open a ticket?'; -export const handleError: HandleServerError = async ({ error }) => { +const parseError = (error: unknown) => { const httpError = error as AxiosError; + const request = httpError?.request as Request & { path: string }; const response = httpError?.response as AxiosResponse<{ message: string; statusCode: number; @@ -49,9 +55,23 @@ export const handleError: HandleServerError = async ({ error }) => { code += ` - ${response.data?.error || response.statusText}`; } + if (request && response) { + console.log({ + status: response.status, + url: `${request.method} ${request.path}`, + response: response.data || 'No data', + }); + } + return { message: response?.data?.message || httpError?.message || DEFAULT_MESSAGE, code, stack: httpError?.stack, }; }; + +export const handleError: HandleServerError = ({ error }) => { + const result = parseError(error); + console.error(`${LOG_PREFIX}:handleError ${result.message}`); + return result; +};