Plan stuff. Log stuff.
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.
 
 
 
 
 

58 lines
1.2 KiB

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