diff --git a/src/routes/api.js b/src/routes/api.js index bedb3da528..a708b01793 100644 --- a/src/routes/api.js +++ b/src/routes/api.js @@ -26,15 +26,7 @@ var path = require('path'), app.all('*', function(req, res, next) { if(req.user) { - user.getUserField(req.user.uid, 'status', function(err, status) { - if(err) { - return next(err); - } - - if(status !== 'offline') { - user.setUserField(req.user.uid, 'lastonline', Date.now()); - } - }); + user.updateLastOnlineTime(req.user.uid); } next(); diff --git a/src/socket.io/index.js b/src/socket.io/index.js index 6b8c7db45e..413259e6b5 100644 --- a/src/socket.io/index.js +++ b/src/socket.io/index.js @@ -139,7 +139,7 @@ Sockets.init = function(server) { function callMethod(method) { if(socket.uid) { - user.setUserField(socket.uid, 'lastonline', Date.now()); + user.updateLastOnlineTime(socket.uid); } method.call(null, socket, payload.args.length ? payload.args[0] : null, function(err, result) { diff --git a/src/user.js b/src/user.js index 0429c64449..cd70c36648 100644 --- a/src/user.js +++ b/src/user.js @@ -229,6 +229,22 @@ var bcrypt = require('bcryptjs'), }, callback); } + User.updateLastOnlineTime = function(uid, callback) { + User.getUserField(uid, 'status', function(err, status) { + function cb(err) { + if(typeof callback === 'function') { + callback(err); + } + } + + if(err || status === 'offline') { + return cb(err); + } + + User.setUserField(socket.uid, 'lastonline', Date.now(), cb); + }); + }; + User.updateProfile = function(uid, data, callback) { var fields = ['username', 'email', 'fullname', 'website', 'location', 'birthday', 'signature']; var returnData = {