all files / src/socket.io/user/ status.js

21.74% Statements 5/23
0% Branches 0/10
20% Functions 1/5
21.74% Lines 5/23
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42                                                                         
'use strict';
 
var user = require('../../user');
var websockets = require('../index');
 
module.exports = function(SocketUser) {
	SocketUser.checkStatus = function(socket, uid, callback) {
		if (!socket.uid) {
			return callback('[[error:invalid-uid]]');
		}
 
		user.getUserFields(uid, ['lastonline', 'status'], function(err, userData) {
			if (err) {
				return callback(err);
			}
			var status = user.getStatus(userData);
			callback(null, status);
		});
	};
 
	SocketUser.setStatus = function(socket, status, callback) {
		if (!socket.uid) {
			return callback(new Error('[[error:invalid-uid]]'));
		}
 
		var allowedStatus = ['online', 'offline', 'dnd', 'away'];
		if (allowedStatus.indexOf(status) === -1) {
			return callback(new Error('[[error:invalid-user-status]]'));
		}
		user.setUserField(socket.uid, 'status', status, function(err) {
			if (err) {
				return callback(err);
			}
			var data = {
				uid: socket.uid,
				status: status
			};
			websockets.server.emit('event:user_status_change', data);
			callback(null, data);
		});
	};
};