};
this.next_prompt_id = 1;
}
+
+ add_prompt(items, prompt_string) {
+ const prompt = new Prompt(this.next_prompt_id, items, prompt_string);
+ this.next_prompt_id++;
+
+ this.state.prompts.push(prompt);
+
+ this.broadcast_event_object('prompt', prompt);
+
+ return prompt;
+ }
+
+ /* Returns true if vote toggled, false for player or prompt not found */
+ toggle_vote(prompt_id, session_id) {
+ const player = this.players_by_session[session_id];
+
+ const prompt = this.state.prompts.find(p => p.id === prompt_id);
+ if (! prompt || ! player)
+ return false;
+
+ prompt.toggle_vote(player.name);
+
+ this.broadcast_event_object('prompt', prompt);
+
+ return true;
+ }
}
Empathy.router = express.Router();
router.post('/prompts', (request, response) => {
const game = request.game;
- const prompt = new Prompt(game.next_prompt_id,
- request.body.items,
- request.body.prompt);
- game.next_prompt_id++;
-
- game.state.prompts.push(prompt);
-
- game.broadcast_event_object('prompt', prompt);
+ game.add_prompt(request.body.items, request.body.prompt);
});
router.post('/vote/:prompt_id([0-9]+)', (request, response) => {
- const prompt_id = parseInt(request.params.prompt_id, 10);
const game = request.game;
- const player = game.players_by_session[request.session.id];
+ const prompt_id = parseInt(request.params.prompt_id, 10);
- prompt = game.state.prompts.find(p => p.id === prompt_id);
- if (! prompt || ! player) {
+ if (game.toggle_vote(prompt_id, request.session.id))
+ response.sendStatus(200);
+ else
response.sendStatus(404);
- return;
- }
-
- prompt.toggle_vote(player.name);
-
- game.broadcast_event_object('prompt', prompt);
-
- response.sendStatus(200);
});
Empathy.meta = {