From 117a424a5d4978eff7f69d40b9e7f59ff5deaf25 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Tue, 25 Nov 2014 13:48:36 -0700 Subject: [PATCH] refactor(members): DRY some members code --- src/controllers/members.js | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/src/controllers/members.js b/src/controllers/members.js index 9d3017960f..d87f561827 100644 --- a/src/controllers/members.js +++ b/src/controllers/members.js @@ -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); }) - } \ No newline at end of file