feature completed challenge can also return json

This commit is contained in:
Berkeley Martinez
2016-01-09 20:08:01 -08:00
parent 0316c31708
commit 553f87822c

View File

@ -4,6 +4,7 @@ import moment from 'moment';
import { Observable, Scheduler } from 'rx'; import { Observable, Scheduler } from 'rx';
import assign from 'object.assign'; import assign from 'object.assign';
import debugFactory from 'debug'; import debugFactory from 'debug';
import accepts from 'accepts';
import { import {
dasherize, dasherize,
@ -81,7 +82,8 @@ function updateUserProgress(user, challengeId, completedChallenge) {
lastUpdated: completedChallenge.completedDate lastUpdated: completedChallenge.completedDate
} }
); );
return user;
return { user, alreadyCompleted };
} }
@ -373,6 +375,7 @@ module.exports = function(app) {
} }
function completedChallenge(req, res, next) { function completedChallenge(req, res, next) {
const type = accepts(req).type('html', 'json', 'text');
const completedDate = Math.round(+new Date()); const completedDate = Math.round(+new Date());
const { const {
@ -382,7 +385,7 @@ module.exports = function(app) {
solution solution
} = req.body; } = req.body;
updateUserProgress( const { alreadyCompleted } = updateUserProgress(
req.user, req.user,
id, id,
{ {
@ -395,9 +398,11 @@ module.exports = function(app) {
} }
); );
let user = req.user;
saveUser(req.user) saveUser(req.user)
.subscribe( .subscribe(
function(user) { function(user) {
user = user;
debug( debug(
'user save points %s', 'user save points %s',
user && user.progressTimestamps && user.progressTimestamps.length user && user.progressTimestamps && user.progressTimestamps.length
@ -405,6 +410,12 @@ module.exports = function(app) {
}, },
next, next,
function() { function() {
if (type === 'json') {
return res.json({
points: user.progressTimestamps.length,
alreadyCompleted
});
}
res.sendStatus(200); res.sendStatus(200);
} }
); );