You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
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<ProjectStoreData>({ 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();
|