You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

105 lines
2.2 KiB
JavaScript

var meta = require('../meta'),
user = require('../user'),
topics = require('../topics'),
logger = require('../logger'),
plugins = require('../plugins'),
nconf = require('nconf'),
gravatar = require('gravatar'),
winston = require('winston'),
server = require('./'),
SocketMeta = {};
SocketMeta.reconnected = function(socket) {
var uid = socket.uid,
sessionID = socket.id;
if (uid) {
topics.pushUnreadCount(uid);
user.pushNotifCount(uid);
}
if (process.env.NODE_ENV === 'development') {
if (uid) {
winston.info('[socket] uid ' + uid + ' (' + sessionID + ') has successfully reconnected.');
} else {
winston.info('[socket] An anonymous user (' + sessionID + ') has successfully reconnected.');
}
}
};
SocketMeta.buildTitle = function(socket, text, callback) {
11 years ago
meta.title.build(text, callback);
};
SocketMeta.updateHeader = function(socket, data, callback) {
11 years ago
if(!data) {
return callback(new Error('invalid data'));
}
if (socket.uid) {
user.getUserFields(socket.uid, data.fields, function(err, fields) {
11 years ago
if(err) {
return callback(err);
}
if (fields) {
fields.uid = socket.uid;
11 years ago
callback(null, fields);
} else {
11 years ago
callback(null, []);
}
});
} else {
11 years ago
callback(null, {
uid: 0,
username: "Anonymous User",
email: '',
picture: gravatar.url('', {
s: '24'
11 years ago
}, true),
config: {
allowGuestSearching: meta.config.allowGuestSearching
}
});
}
};
SocketMeta.getUsageStats = function(socket, data, callback) {
module.parent.exports.emitTopicPostStats(callback);
};
/* Rooms */
SocketMeta.rooms = {};
SocketMeta.rooms.enter = function(socket, data) {
11 years ago
if(!data) {
return callback(new Error('invalid data'));
}
if (data.leave !== null) {
socket.leave(data.leave);
}
socket.join(data.enter);
if (data.leave) {
module.parent.exports.updateRoomBrowsingText(data.leave);
}
module.parent.exports.updateRoomBrowsingText(data.enter);
if (data.enter != 'admin') {
11 years ago
server.in('admin').emit('event:meta.rooms.update', null, server.server.sockets.manager.rooms);
}
};
SocketMeta.rooms.getAll = function(socket, data, callback) {
11 years ago
callback(null, server.server.sockets.manager.rooms);
};
/* Exports */
module.exports = SocketMeta;