blob: d5ffaa99a8d4d742f40d0b793e1fda8e0d08bde5 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
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<Array<TimeLabelDto>>([]);
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<IInternalFetchResponse> {
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;
|