import { dev } from '$app/environment'; import { uuid } from '$lib/stores/uuid'; import type { Unsubscriber } from 'svelte/store'; function getUrlString(): string { if (dev) { const testUrl: string = 'http://localhost:8460'; console.info('DEVMODE active, using testing URL: ', testUrl); return testUrl; } else { const currentUrl: string = `https://${window.location.host}`; return currentUrl; } } export async function apiGet(path: string): Promise { let uuidString: string = ''; let unsubscribe: Unsubscriber; try { unsubscribe = uuid.subscribe((value) => { uuidString = value; }); } catch (err) { throw new Error('Unable to read UUID'); } const options = { method: 'GET', headers: { uuid: uuidString } }; try { const res = await fetch(getUrlString() + path, options); if (!res.ok) { throw new Error('Network response not ok'); } const contentType = res.headers.get('content-type'); if (!contentType || !contentType.includes('application/json')) { throw new Error('Invalid response. Require JSON.'); } return await res.json(); } catch (err) { console.error('Error fetching data:', err); throw err; } finally { unsubscribe(); } }