refactor(members): DRY some members code

This commit is contained in:
Tyler Renelle
2014-11-25 13:48:36 -07:00
parent fc3272ddc8
commit 117a424a5d
+21 -10
View File
@@ -6,21 +6,33 @@ var async = require('async');
var _ = require('lodash');
var shared = require('habitrpg-shared');
var fetchMember = function(uuid, restrict){
return function(cb){
var q = User.findById(uuid);
if (restrict) q.select(partyFields);
q.exec(function(err, member){
if (err) return cb(err);
if (!member) return cb({code:404, err: 'User not found'});
return cb(null, member);
})
}
}
var sendErr = function(err, res, next){
err.code ? res.json(err.code, {err: err.err}) : next(err);
}
api.getMember = function(req, res, next) {
User.findById(req.params.uuid).select(partyFields).exec(function(err, user){
if (err) return next(err);
if (!user) return res.json(400,{err:'User not found'});
res.json(user);
fetchMember(req.params.uuid, true)(function(err, member){
if (err) return sendErr(err, res, next);
res.json(member);
})
}
api.sendPrivateMessage = function(req,res,next){
async.waterfall([
function(cb){
User.findById(req.params.uuid, cb);
},
fetchMember(req.params.uuid),
function(member, cb){
if (!member) return cb({code:404, err: 'User not found'});
if (~member.inbox.blocks.indexOf(res.locals.user._id) // can't send message if that user blocked me
|| ~res.locals.user.inbox.blocks.indexOf(member._id) // or if I blocked them
|| member.inbox.optOut) { // or if they've opted out of messaging
@@ -43,8 +55,7 @@ api.sendPrivateMessage = function(req,res,next){
res.locals.user.save(cb);
}
], function(err){
if (err) return err.code ? res.json(err.code,{err:err.err}) : err;
if (err) return sendErr(err, res, next);
res.send(200);
})
}