Todo
Here is the code for a todo store
const todoStore = new Store({todos:[]}, 'add', 'remove', 'update', 'complete', 'load');
todoStore.add.add((state, todo) => {
return {...state, todos : [...state.todos, {text: todo, completed: false}]}
})
todoStore.remove.add((state, id) => {
return {...state, todos : [...state.todos.slice(0, id), ...state.todos.slice(id + 1)]}
})
todoStore.update.add((state, id, todo) => {
return {...state, todos : [...state.todos.slice(0, id), {...todo}, ...state.todos.slice(id + 1)]}
})
todoStore.complete.add((state, id) => {
let todo = {...state.todos[id]}
todo.completed = true;
return {...state, todos : [...state.todos.slice(0, id), {...todo}, ...state.todos.slice(id + 1)]}
})
todoStore.load.add((state) => {
var dummyData = {
todos: [
{ text: "Learn how to use Sinux", completed: false }
]
}
return new Promise((resolve, reject) => {
setTimeout(()=> resolve({...state, todos : [...state.todos, ...dummyData.todos]}), 1000)
})
})