import { writable } from "svelte/store"; import slApi from "../api/stufflog"; import stufflogStore from "./stufflog"; function createItemStore() { const {set, update, subscribe} = writable([]) return { subscribe, listItems() { return slApi.listItems().then(items => { set(items) console.log(items) return items }) }, findItem(id) { return slApi.getItem(id).then(item => { update(s => replaceItem(s, item)) return item }) }, createItem(item) { return slApi.postItem(item).then(item => { update(s => replaceItem(s, item)) return item }) }, updateItem(id, ...updates) { return slApi.updateItem(id, ...updates).then(item => { update(s => replaceItem(s, item)) return item }) }, deleteItem(id) { return slApi.deleteItem(id).then(item => { update(s => s.items.filter(i => i.id !== item.id)) return item }) }, } } function replaceItem(s, item) { return ([ ...s.items.filter(i => i.id !== item.id), item ].sort((a, b) => a.name.localeCompare(b.name))) } export default createItemStore();