import {writable, get} from "svelte/store"; import {create_time_label, delete_time_label, get_time_labels} from "$shared/lib/api/time-entry"; import type {IInternalFetchResponse} from "$shared/lib/models/IInternalFetchResponse"; import type {TimeLabelDto} from "$shared/lib/models/TimeLabelDto"; const labels = writable>([]); export async function reload_labels() { const get_labels_response = await get_time_labels(); if (!get_labels_response.ok) { clear_labels(); return; } labels.set(get_labels_response.data ?? []); } export function clear_labels() { labels.set([]); } export async function create_label_async(request: TimeLabelDto): Promise { const create_label_response = await create_time_label(request); if (create_label_response.ok) { const stored_entries = get(labels) ?? []; stored_entries.push(create_label_response.data); labels.set(stored_entries); } return create_label_response; } export async function edit_label_async(entry: TimeLabelDto) { if (!entry.id) throw new Error("Label id is required"); } export async function delete_label_async(entry: TimeLabelDto) { if (!entry.id) return; const http_request = await delete_time_label(entry.id); if (http_request.ok) { const stored_entries = get(labels) ?? []; labels.set(stored_entries.filter(e => e.id !== entry.id)); } } export default labels;