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.
 
 
 
 
 
 

38 lines
867 B

import { writable } from "svelte/store";
import stuffLogClient from "../clients/stufflog";
import type { TaskFilter, TaskResult } from "../models/task";
interface TaskStoreData {
loading: boolean
stale: boolean
filter: TaskFilter
tasks: TaskResult[]
}
function createTaskStore() {
const {update, subscribe} = writable<TaskStoreData>({
loading: false,
stale: true,
filter: {},
tasks: [],
});
return {
subscribe,
markStale() {
update(v => ({...v, stale: true}));
},
async load(filter: TaskFilter) {
update(v => ({...v, loading: true, stale: false, filter}));
const tasks = await stuffLogClient.listTasks(filter);
update(v => ({...v, loading: false, tasks: [...tasks]}));
},
}
}
const taskStore = createTaskStore();
export default taskStore;
export const fpTaskStore = createTaskStore();