refactor(members): DRY some members code
This commit is contained in:
+21
-10
@@ -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);
|
||||
})
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user