Source code
Revision control
Copy as Markdown
Other Tools
import { assign, isEqual } from './share';
const STOR = {};
const STOR_ID = 'todos-inferno';
export default class Model {
get = () => (this.data = JSON.parse(STOR[STOR_ID] || '[]'))
set = arr => {
this.data = arr || this.data || [];
STOR[STOR_ID] = JSON.stringify(this.data);
return this.data;
}
add = str => this.set(
this.data.concat({title: str, completed: false})
)
put = (todo, obj) => this.set(
this.data.map(t => isEqual(t, todo) ? assign(todo, obj) : t)
)
del = todo => this.set(
this.data.filter(t => !isEqual(t, todo))
)
toggle = todo => this.put(todo, {completed: !todo.completed})
toggleAll = completed => this.set(
this.data.map(t => ({...t, completed}))
)
clearCompleted = () => this.set(
this.data.filter(t => !t.completed)
)
}