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.
 
 
 
 
 
 

39 lines
985 B

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();