|
|
|
'use strict';
|
|
|
|
|
|
|
|
var meta = require('../meta'),
|
|
|
|
user = require('../user'),
|
|
|
|
topics = require('../topics'),
|
|
|
|
emitter = require('../emitter'),
|
|
|
|
|
|
|
|
websockets = require('./'),
|
|
|
|
|
|
|
|
SocketMeta = {
|
|
|
|
rooms: {}
|
|
|
|
};
|
|
|
|
|
|
|
|
SocketMeta.reconnected = function (socket, data, callback) {
|
|
|
|
if (socket.uid) {
|
|
|
|
topics.pushUnreadCount(socket.uid);
|
|
|
|
user.notifications.pushCount(socket.uid);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
emitter.on('nodebb:ready', function () {
|
|
|
|
websockets.server.emit('event:nodebb.ready', {
|
|
|
|
'cache-buster': meta.config['cache-buster']
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
/* Rooms */
|
|
|
|
|
|
|
|
SocketMeta.rooms.enter = function (socket, data, callback) {
|
|
|
|
if (!socket.uid) {
|
|
|
|
return callback();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!data) {
|
|
|
|
return callback(new Error('[[error:invalid-data]]'));
|
|
|
|
}
|
|
|
|
|
|
|
|
if (data.enter) {
|
|
|
|
data.enter = data.enter.toString();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (data.enter && data.enter.startsWith('uid_') && data.enter !== 'uid_' + socket.uid) {
|
|
|
|
return callback(new Error('[[error:not-allowed]]'));
|
|
|
|
}
|
|
|
|
|
|
|
|
leaveCurrentRoom(socket);
|
|
|
|
|
|
|
|
if (data.enter) {
|
|
|
|
socket.join(data.enter);
|
|
|
|
socket.currentRoom = data.enter;
|
|
|
|
}
|
|
|
|
callback();
|
|
|
|
};
|
|
|
|
|
|
|
|
SocketMeta.rooms.leaveCurrent = function (socket, data, callback) {
|
|
|
|
if (!socket.uid || !socket.currentRoom) {
|
|
|
|
return callback();
|
|
|
|
}
|
|
|
|
leaveCurrentRoom(socket);
|
|
|
|
callback();
|
|
|
|
};
|
|
|
|
|
|
|
|
function leaveCurrentRoom(socket) {
|
|
|
|
if (socket.currentRoom) {
|
|
|
|
socket.leave(socket.currentRoom);
|
|
|
|
socket.currentRoom = '';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
SocketMeta.getServerTime = function (socket, data, callback) {
|
|
|
|
// Returns server time in milliseconds
|
|
|
|
callback(null, Date.now());
|
|
|
|
};
|
|
|
|
|
|
|
|
module.exports = SocketMeta;
|