import { writable } from "svelte/store"; import stuffLogClient from "../clients/stufflog"; import type { ProjectFilter, ProjectResult } from "../models/project"; interface ProjectStoreData { loading: boolean stale: boolean filter: ProjectFilter projects: ProjectResult[] } function createProjectStore() { const {update, subscribe} = writable({ loading: false, stale: true, filter: {}, projects: [], }); return { subscribe, markStale() { update(v => ({...v, stale: true})); }, async load(filter: ProjectFilter) { update(v => ({...v, loading: true, stale: false, filter})); const projects = await stuffLogClient.listProjects(filter); update(v => ({...v, loading: false, projects: projects.reverse()})); }, } } const projectStore = createProjectStore(); export default projectStore; export const fpProjectStore = createProjectStore(); export const fpProjectStore2 = createProjectStore();