import { goto } from '$app/navigation'; import { userStore } from 'routes/UserStore.svelte'; import { notificationStore } from './NotificationsStore.svelte'; const API = '/api'; export async function get(url: string) { const headers = new Headers(); //headers.append('content-type', 'application/json'); headers.append('response-type', 'application/json'); if (userStore.user) { headers.append('token', userStore.user.token); } const r = await fetch(`${API}/${url}`, { method: 'GET', headers: headers }); if (r.status === 401) { userStore.user = undefined; goto('/login'); } else if (r.status !== 200) { throw r; } return r.json(); } export async function post(url: string, body: any) { const headers = new Headers(); headers.append('content-type', 'application/json'); if (userStore.user) { headers.append('token', userStore.user.token); } const r = await fetch(`${API}/${url}`, { method: 'POST', headers: headers, body: JSON.stringify(body) }); if (r.status === 401) { userStore.user = undefined; goto('/login'); throw r; } else if (r.status !== 200) { throw r; } return r.json(); } export async function rdelete(url: string, body: any) { const headers = new Headers(); headers.append('content-type', 'application/json'); if (userStore.user) { headers.append('token', userStore.user.token); } const r = await fetch(`${API}/${url}`, { method: 'DELETE', headers: headers, body: JSON.stringify(body) }); if (r.status === 401) { userStore.user = undefined; goto('/login'); } else if (r.status !== 200) { throw r; } return r.json(); } export async function postFormData(url: string, body: FormData) { const headers = new Headers(); //headers.append('content-type', 'multipart/form-data'); headers.append('response-type', 'application/json'); if (userStore.user) { headers.append('token', userStore.user.token); } const r = await fetch(`${API}/${url}`, { method: 'POST', headers: headers, body: body }); if (r.status == 401) { userStore.user = undefined; goto('/login'); throw new Error('Redirect'); } if (r.status !== 200) { throw r; } return r.json(); } export async function showMessage( e: any, messages: any = notificationStore, message = 'Could not complete request' ): Promise { if (e == null) { return false; } else if (e instanceof Response) { try { messages.display(await e.json()); } catch (ex) { showMessage(ex, messages, message); } return true; } else { console.error(e); messages.display(message); return true; } }