diff --git a/src/app/character.coffee b/src/app/character.coffee index 19a64d0fd3..3acbaba2b3 100644 --- a/src/app/character.coffee +++ b/src/app/character.coffee @@ -60,6 +60,9 @@ module.exports.app = (appExports, model) -> appExports.closeAlgosNotification = (e, el) -> user.set('flags.algosNotification', 'hide') + appExports.closeOnliesNotification = (e, el) -> + user.set('flags.onliesNotification', 'hide') + appExports.customizeGender = (e, el) -> user.set 'preferences.gender', $(el).attr('data-value') diff --git a/src/app/scoring.coffee b/src/app/scoring.coffee index f95d12c7f3..4ae7dfd955 100644 --- a/src/app/scoring.coffee +++ b/src/app/scoring.coffee @@ -217,6 +217,9 @@ cron = (model) -> value = obj.tasks[taskObj.id].value #get updated value absVal = if (completed) then Math.abs(value) else value todoTally += absVal + else if type is 'habit' #reset 'onlies' value to 0 + if taskObj.up==false or taskObj.down==false + batch.set "tasks.#{taskObj.id}.value", 0 # Finished tallying obj.history ?= {}; obj.history.todos ?= []; obj.history.exp ?= [] diff --git a/src/server/api.coffee b/src/server/api.coffee index 7ab6d75e07..8927f6172b 100644 --- a/src/server/api.coffee +++ b/src/server/api.coffee @@ -117,38 +117,39 @@ router.get '/user/tasks', auth, (req, res) -> This is called form deprecated.coffee's score function, and the req.headers are setup properly to handle the login ### scoreTask = (req, res, next) -> - auth req, res, -> - {taskId, direction} = req.params - {title, service, icon} = req.body + {taskId, direction} = req.params + {title, service, icon} = req.body - # Send error responses for improper API call - return res.send(500, ':taskId required') unless taskId - return res.send(500, ":direction must be 'up' or 'down'") unless direction in ['up','down'] + # Send error responses for improper API call + return res.send(500, ':taskId required') unless taskId + return res.send(500, ":direction must be 'up' or 'down'") unless direction in ['up','down'] - model = req.getModel() - {user, userObj} = req + model = req.getModel() + {user, userObj} = req - model.ref('_user', user) + model.ref('_user', user) - # Create task if doesn't exist - # TODO add service & icon to task - unless model.get("_user.tasks.#{taskId}") - model.refList "_habitList", "_user.tasks", "_user.habitIds" - model.at('_habitList').push - id: taskId - type: 'habit' - text: (title || taskId) - value: 0 - up: true - down: true - notes: "This task was created by a third-party service. Feel free to edit, it won't harm the connection to that service. Additionally, multiple services may piggy-back off this task." + # Create task if doesn't exist + # TODO add service & icon to task + unless model.get("_user.tasks.#{taskId}") + model.refList "_habitList", "_user.tasks", "_user.habitIds" + model.at('_habitList').push + id: taskId + type: 'habit' + text: (title || taskId) + value: 0 + up: true + down: true + notes: "This task was created by a third-party service. Feel free to edit, it won't harm the connection to that service. Additionally, multiple services may piggy-back off this task." - delta = scoring.score(model, taskId, direction) - result = model.get ('_user.stats') - result.delta = delta - res.send(result) -router.post '/user/tasks/:taskId/:direction', scoreTask + delta = scoring.score(model, taskId, direction) + result = model.get ('_user.stats') + result.delta = delta + res.send(result) + +router.post '/user/tasks/:taskId/:direction', auth, scoreTask module.exports = router +module.exports.auth = auth module.exports.scoreTask = scoreTask # export so deprecated can call it diff --git a/src/server/deprecated.coffee b/src/server/deprecated.coffee index a1c1ff817c..3fcef2c8a3 100644 --- a/src/server/deprecated.coffee +++ b/src/server/deprecated.coffee @@ -15,10 +15,12 @@ router.get '/:uid/down/:score?', (req, res) -> res.send(500, deprecatedMessage) router.post '/users/:uid/tasks/:taskId/:direction', (req, res) -> res.send(500, deprecatedMessage) # Redirect to new API -router.post '/v1/users/:uid/tasks/:taskId/:direction', (req, res, next) -> +initDeprecated = (req, res, next) -> req.headers['x-api-user'] = req.params.uid req.headers['x-api-key'] = req.body.apiToken - api.scoreTask(req, res, next) + next() + +router.post '/v1/users/:uid/tasks/:taskId/:direction', initDeprecated, api.auth, api.scoreTask router.get '/v1/users/:uid/calendar.ics', (req, res) -> #return next() #disable for now @@ -47,4 +49,4 @@ router.get '/v1/users/:uid/calendar.ics', (req, res) -> formattedIcal = ical.toString().replace(/DTSTART\:/g, 'DTSTART;VALUE=DATE:') res.send(200, formattedIcal) -module.exports = router \ No newline at end of file +module.exports = router diff --git a/views/app/alerts.html b/views/app/alerts.html index bb91206ced..a230f65abd 100644 --- a/views/app/alerts.html +++ b/views/app/alerts.html @@ -7,8 +7,20 @@ {#if equal(_user.flags.algosNotification,'show')}
New features! Custom day start, new and better algorithms, authentication enhancements. See details here. + [x] +
New features! Custom day start, new and better algorithms, authentication enhancements. See details here. "Hey, I had more Exp before this roll-out!" Restore your Exp here.
+ "Onlies" now gain / lose value just like other habits, and are reset back to 0 at the beginning of each day. + See details here, and + chime in with your recommendations on this mechanic. +
+