diff --git a/app/src/lib/api.ts b/app/src/lib/api.ts index dc70b1b..167e1c4 100644 --- a/app/src/lib/api.ts +++ b/app/src/lib/api.ts @@ -1,6 +1,7 @@ import { user } from '$lib/stores/user'; import { get } from 'svelte/store'; import { Err, Ok, type Result } from './utilities'; +import { location } from './stores'; export namespace api { export function get(endpoint: string, params?: RequestInit) { @@ -26,6 +27,7 @@ async function sendRequest( data?: unknown, params?: RequestInit ): Promise> { + endpoint = resolveUrl(endpoint); const user_token = get(user).bearer_token; const body = data !== null && typeof data !== 'undefined' ? JSON.stringify(data) : undefined; @@ -66,6 +68,12 @@ async function sendRequest( } } +function resolveUrl(url: string): string { + if (url.startsWith('http') || !get(location)) return url; + const protocol = window.location.protocol; + return `${protocol}//${get(location)}${url.startsWith('/') ? '' : '/'}${url}`; +} + export class ApiError extends Error { constructor(public readonly response: Response) { super(`${response.status}`);