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

38 lines
825 B
TypeScript

import { writable } from "svelte/store";
import stuffLogClient from "../clients/stufflog";
import type { LogFilter, LogResult } from "../models/log";
interface ProjectStoreData {
loading: boolean
stale: boolean
logs: LogResult[]
filter: LogFilter
}
function createProjectStore() {
const {update, subscribe} = writable<ProjectStoreData>({
loading: false,
stale: true,
logs: [],
filter: {},
});
return {
subscribe,
markStale() {
update(v => ({...v, stale: true}));
},
async load(filter: LogFilter) {
update(v => ({...v, loading: true, filter}));
const logs = await stuffLogClient.listLogs(filter);
update(v => ({...v, loading: false, stale: false, logs: logs.reverse()}));
},
}
}
const logStore = createProjectStore();
export default logStore;