immich/web/src/lib/utils/handle-error.ts
Ben McCann 87ae0be081
chore: enum support for new API (#7110)
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2024-02-14 06:38:57 -08:00

36 lines
967 B
TypeScript

import type { ApiError } from '$lib/utils';
import axios from 'axios';
import { notificationController, NotificationType } from '../components/shared-components/notification/notification';
export async function getServerErrorMessage(error: unknown) {
let data = (error as ApiError)?.response?.data;
if (data instanceof Blob) {
const response = await data.text();
try {
data = JSON.parse(response);
} catch {
data = { message: response };
}
}
return data?.message || null;
}
export async function handleError(error: unknown, message: string) {
if (axios.isCancel(error)) {
return;
}
console.error(`[handleError]: ${message}`, error);
let serverMessage = await getServerErrorMessage(error);
if (serverMessage) {
serverMessage = `${String(serverMessage).slice(0, 75)}\n(Immich Server Error)`;
}
notificationController.show({
message: serverMessage || message,
type: NotificationType.Error,
});
}