Skip to content

Instantly share code, notes, and snippets.

@antonycourtney
Last active October 19, 2015 02:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save antonycourtney/320a6036169975c8b08d to your computer and use it in GitHub Desktop.
Save antonycourtney/320a6036169975c8b08d to your computer and use it in GitHub Desktop.
Responses to user interaction in oneref-todomvc
/**
* todoActions.js -- event handlers for TodoMVC app
*/
import TodoItem from './todoItem';
export function create(text,updater) {
updater((state) => state.addItem(new TodoItem(text)));
}
export function toggleComplete(item,updater) {
const updatedItem = item.set('complete', !item.complete);
updater((state) => state.addItem(updatedItem));
}
export function updateText(item,text,updater) {
const updatedItem = item.set('text',text);
updater((state) => state.addItem(updatedItem));
}
export function destroy(id,updater) {
updater((state) => state.removeItem(id));
}
export function destroyCompleted(updater) {
updater((state) => {
const completedIds = state.getAll().filter((item) => item.complete).map((item) => item.id);
return completedIds.reduce((s,id) => s.removeItem(id),state);
});
}
export function toggleCompleteAll(updater) {
updater((state) => {
const targetVal = !(state.areAllComplete());
// We'll set completed state of all items to targetVal:
const updItems = state.getAll().map((item) => item.set('complete', targetVal));
const nextState = updItems.reduce((st,item) => st.addItem(item), state);
return nextState;
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment