Files
NodeBB/src/socket.io/meta.js

64 lines
1.2 KiB
JavaScript
Raw Normal View History

2014-07-20 18:44:08 -04:00
'use strict';
2016-11-18 15:32:35 +03:00
var user = require('../user');
var topics = require('../topics');
var SocketMeta = {
2017-02-17 19:31:21 -07:00
rooms: {},
};
SocketMeta.reconnected = function (socket, data, callback) {
2016-11-18 15:32:35 +03:00
callback = callback || function () {};
2014-12-03 19:43:15 -05:00
if (socket.uid) {
topics.pushUnreadCount(socket.uid);
user.notifications.pushCount(socket.uid);
}
2016-11-18 15:32:35 +03:00
callback();
};
/* Rooms */
SocketMeta.rooms.enter = function (socket, data, callback) {
if (!socket.uid) {
2015-05-15 00:02:59 -04:00
return callback();
}
2015-05-14 13:53:02 -04:00
2014-09-06 00:19:46 -04:00
if (!data) {
2014-04-09 21:27:20 -04:00
return callback(new Error('[[error:invalid-data]]'));
2014-01-17 12:52:04 -05:00
}
if (data.enter) {
data.enter = data.enter.toString();
}
2015-05-14 13:53:02 -04:00
if (data.enter && data.enter.startsWith('uid_') && data.enter !== 'uid_' + socket.uid) {
return callback(new Error('[[error:not-allowed]]'));
}
2015-10-20 17:53:44 -04:00
leaveCurrentRoom(socket);
if (data.enter) {
socket.join(data.enter);
socket.currentRoom = data.enter;
}
2015-05-15 00:02:59 -04:00
callback();
};
SocketMeta.rooms.leaveCurrent = function (socket, data, callback) {
2015-10-20 17:53:44 -04:00
if (!socket.uid || !socket.currentRoom) {
return callback();
}
leaveCurrentRoom(socket);
callback();
};
function leaveCurrentRoom(socket) {
if (socket.currentRoom) {
socket.leave(socket.currentRoom);
2015-10-20 17:53:44 -04:00
socket.currentRoom = '';
}
}
2014-04-10 20:31:57 +01:00
module.exports = SocketMeta;