mirror of
https://github.com/BrenBroZAYT/gameyfin.git
synced 2026-06-15 16:20:03 +00:00
273e9b0a07
Change background of Sonner
31 lines
1.2 KiB
TypeScript
31 lines
1.2 KiB
TypeScript
import {Middleware, MiddlewareContext, MiddlewareNext} from '@hilla/frontend';
|
|
import {toast} from "sonner";
|
|
import {getReasonPhrase} from "http-status-codes";
|
|
|
|
export const ErrorHandlingMiddleware: Middleware = async function (
|
|
context: MiddlewareContext,
|
|
next: MiddlewareNext
|
|
) {
|
|
const {endpoint, method} = context;
|
|
|
|
let originalResponse = (await next(context));
|
|
|
|
if (!originalResponse.ok) {
|
|
// .clone() is necessary because response.json() is one-time only and Hilla accesses it in its internal error handler
|
|
// @see https://developer.mozilla.org/en-US/docs/Web/API/Response/clone
|
|
let response: Response = originalResponse.clone();
|
|
|
|
//Ignore calls to UserEndpoint.getUserInfo since they are managed by Hilla and called on initial load
|
|
if (endpoint == "UserEndpoint" && method == "getUserInfo") return originalResponse;
|
|
|
|
let json: any = await response.json();
|
|
|
|
if (json.type == "dev.hilla.exception.EndpointException") {
|
|
toast.error(`${getReasonPhrase(response.status)}`, {description: `${json.message}`});
|
|
} else {
|
|
toast.error(`${getReasonPhrase(response.status)}`, {description: `${endpoint}.${method}`})
|
|
}
|
|
}
|
|
|
|
return originalResponse;
|
|
} |