send less data when leaving rooms

v1.18.x
barisusakli 10 years ago
parent 36e89ae15a
commit d146bff2a1

@ -46,7 +46,7 @@ $(document).ready(function() {
return true; return true;
} }
app.enterRoom(''); app.leaveCurrentRoom();
$(window).off('scroll'); $(window).off('scroll');

@ -143,14 +143,25 @@ app.cacheBuster = null;
status: app.user.status status: app.user.status
}, function(err) { }, function(err) {
if (err) { if (err) {
app.alertError(err.message); return app.alertError(err.message);
return;
} }
app.currentRoom = room; app.currentRoom = room;
}); });
} }
}; };
app.leaveCurrentRoom = function() {
if (!socket) {
return;
}
socket.emit('meta.rooms.leaveCurrent', function(err) {
if (err) {
return app.alertError(err.message);
}
app.currentRoom = '';
});
}
function highlightNavigationLink() { function highlightNavigationLink() {
var path = window.location.pathname; var path = window.location.pathname;
$('#main-nav li').removeClass('active'); $('#main-nav li').removeClass('active');

@ -1,16 +1,10 @@
'use strict'; 'use strict';
var nconf = require('nconf'), var validator = require('validator'),
gravatar = require('gravatar'),
winston = require('winston'),
validator = require('validator'),
db = require('../database'),
meta = require('../meta'), meta = require('../meta'),
user = require('../user'), user = require('../user'),
topics = require('../topics'), topics = require('../topics'),
logger = require('../logger'),
plugins = require('../plugins'),
emitter = require('../emitter'), emitter = require('../emitter'),
rooms = require('./rooms'), rooms = require('./rooms'),
@ -53,13 +47,7 @@ SocketMeta.rooms.enter = function(socket, data, callback) {
return callback(new Error('[[error:not-allowed]]')); return callback(new Error('[[error:not-allowed]]'));
} }
if (socket.currentRoom) { leaveCurrentRoom(socket);
rooms.leave(socket, socket.currentRoom);
if (socket.currentRoom.indexOf('topic') !== -1) {
websockets.in(socket.currentRoom).emit('event:user_leave', socket.uid);
}
socket.currentRoom = '';
}
if (data.enter) { if (data.enter) {
rooms.enter(socket, data.enter); rooms.enter(socket, data.enter);
@ -76,6 +64,24 @@ SocketMeta.rooms.enter = function(socket, data, callback) {
callback(); callback();
}; };
SocketMeta.rooms.leaveCurrent = function(socket, data, callback) {
if (!socket.uid || !socket.currentRoom) {
return callback();
}
leaveCurrentRoom(socket);
callback();
};
function leaveCurrentRoom(socket) {
if (socket.currentRoom) {
rooms.leave(socket, socket.currentRoom);
if (socket.currentRoom.indexOf('topic') !== -1) {
websockets.in(socket.currentRoom).emit('event:user_leave', socket.uid);
}
socket.currentRoom = '';
}
}
SocketMeta.rooms.getAll = function(socket, data, callback) { SocketMeta.rooms.getAll = function(socket, data, callback) {
var roomClients = rooms.roomClients(); var roomClients = rooms.roomClients();
var socketData = { var socketData = {

Loading…
Cancel
Save