mirror of
				https://github.com/immich-app/immich.git
				synced 2025-10-26 08:12:33 -04: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;
 | |
| };
 |