mirror of
				https://github.com/immich-app/immich.git
				synced 2025-11-04 03:27:09 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			38 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
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 parseHTTPError = (httpError: ApiHttpError) => {
 | 
						|
  const statusCode = httpError?.status || httpError?.data?.statusCode || 500;
 | 
						|
  const message = httpError?.data?.message || (httpError?.data && String(httpError.data)) || httpError?.message;
 | 
						|
 | 
						|
  console.log({
 | 
						|
    status: statusCode,
 | 
						|
    response: httpError?.data || 'No data',
 | 
						|
  });
 | 
						|
 | 
						|
  return {
 | 
						|
    message: message || DEFAULT_MESSAGE,
 | 
						|
    code: statusCode,
 | 
						|
    stack: httpError?.stack,
 | 
						|
  };
 | 
						|
};
 | 
						|
 | 
						|
const parseError = (error: unknown, status: number, message: string) => {
 | 
						|
  if (isHttpError(error)) {
 | 
						|
    return parseHTTPError(error);
 | 
						|
  }
 | 
						|
 | 
						|
  return {
 | 
						|
    message: (error as Error)?.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}`, error);
 | 
						|
  return result;
 | 
						|
};
 |