This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
import { goto } from '$app/navigation';
|
||||
import { session } from '$lib/stores/session.svelte';
|
||||
import { ApiError } from './client';
|
||||
|
||||
/**
|
||||
* Turns a failed call into something to show the user.
|
||||
*
|
||||
* A 401 means the 16-minute JWT lapsed mid-session: there is nothing useful to
|
||||
* display, so the session is dropped and the user is sent back to `/login`, and
|
||||
* this returns null.
|
||||
*/
|
||||
export function toErrorMessage(cause: unknown, fallback: string): string | null {
|
||||
if (cause instanceof ApiError && cause.status === 401) {
|
||||
session.clear();
|
||||
void goto('/login', { replaceState: true });
|
||||
return null;
|
||||
}
|
||||
|
||||
// ApiError already carries the API's own `message`, or "unreachable" for status 0.
|
||||
return cause instanceof ApiError ? cause.message : fallback;
|
||||
}
|
||||
Reference in New Issue
Block a user