| // Note, our Dispatcher combines the following React Flux concepts: Actions, |
| // Dispatcher, and Stores. |
| |
| 'use strict'; |
| |
| module.exports = Dispatcher; |
| |
| function Dispatcher(lists, todos) { |
| this.lists_ = lists; |
| this.todos_ = todos; |
| } |
| |
| Dispatcher.prototype = { |
| addList: function(name) { |
| return this.lists_.insert({name: name}); |
| }, |
| editListName: function(listId, name) { |
| this.lists_.update(listId, {$set: {name: name}}); |
| }, |
| addTodo: function(listId, text, tags) { |
| return this.todos_.insert({ |
| listId: listId, |
| text: text, |
| done: false, |
| timestamp: (new Date()).getTime(), |
| tags: tags |
| }); |
| }, |
| removeTodo: function(todoId) { |
| this.todos_.remove(todoId); |
| }, |
| editTodoText: function(todoId, text) { |
| this.todos_.update(todoId, {$set: {text: text}}); |
| }, |
| markTodoDone: function(todoId, done) { |
| this.todos_.update(todoId, {$set: {done: done}}); |
| }, |
| addTag: function(todoId, tag) { |
| this.todos_.update(todoId, {$addToSet: {tags: tag}}); |
| }, |
| removeTag: function(todoId, tag) { |
| this.todos_.update(todoId, {$pull: {tags: tag}}); |
| } |
| }; |