Files
stufflog2/svelte-ui/src/stores/group.ts
T
2020-12-31 17:49:54 +01:00

36 lines
743 B
TypeScript

import { writable } from "svelte/store";
import stuffLogClient from "../clients/stufflog";
import type { GroupResult } from "../models/group";
interface GroupStoreData {
loading: boolean
stale: boolean
groups: GroupResult[]
}
function createGroupStore() {
const {update, subscribe} = writable<GroupStoreData>({
loading: false,
stale: true,
groups: [],
});
return {
subscribe,
markStale() {
update(v => ({...v, stale: true}));
},
async load() {
update(v => ({...v, loading: true}));
const groups = await stuffLogClient.listGroups();
update(v => ({...v, loading: false, stale: false, groups}));
},
}
}
const groupStore = createGroupStore();
export default groupStore;