-
-
Notifications
You must be signed in to change notification settings - Fork 122
/
Copy pathlabels.ts
39 lines (36 loc) · 994 Bytes
/
labels.ts
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
import { defineStore } from "pinia";
import type { LabelOut } from "~~/lib/api/types/data-contracts";
export const useLabelStore = defineStore("labels", {
state: () => ({
allLabels: null as LabelOut[] | null,
client: useUserApi(),
}),
getters: {
/**
* labels represents the labels that are currently in the store. The store is
* synched with the server by intercepting the API calls and updating on the
* response.
*/
labels(state): LabelOut[] {
if (state.allLabels === null) {
this.client.labels.getAll().then(result => {
if (result.error) {
console.error(result.error);
}
this.allLabels = result.data;
});
}
return state.allLabels ?? [];
},
},
actions: {
async refresh() {
const result = await this.client.labels.getAll();
if (result.error) {
return result;
}
this.allLabels = result.data;
return result;
},
},
});