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