mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-07 22:45:46 +01:00
send less data when leaving rooms
This commit is contained in:
@@ -46,7 +46,7 @@ $(document).ready(function() {
|
||||
return true;
|
||||
}
|
||||
|
||||
app.enterRoom('');
|
||||
app.leaveCurrentRoom();
|
||||
|
||||
$(window).off('scroll');
|
||||
|
||||
|
||||
@@ -143,14 +143,25 @@ app.cacheBuster = null;
|
||||
status: app.user.status
|
||||
}, function(err) {
|
||||
if (err) {
|
||||
app.alertError(err.message);
|
||||
return;
|
||||
return app.alertError(err.message);
|
||||
}
|
||||
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() {
|
||||
var path = window.location.pathname;
|
||||
$('#main-nav li').removeClass('active');
|
||||
|
||||
@@ -1,16 +1,10 @@
|
||||
'use strict';
|
||||
|
||||
var nconf = require('nconf'),
|
||||
gravatar = require('gravatar'),
|
||||
winston = require('winston'),
|
||||
validator = require('validator'),
|
||||
var validator = require('validator'),
|
||||
|
||||
db = require('../database'),
|
||||
meta = require('../meta'),
|
||||
user = require('../user'),
|
||||
topics = require('../topics'),
|
||||
logger = require('../logger'),
|
||||
plugins = require('../plugins'),
|
||||
emitter = require('../emitter'),
|
||||
rooms = require('./rooms'),
|
||||
|
||||
@@ -53,13 +47,7 @@ SocketMeta.rooms.enter = function(socket, data, callback) {
|
||||
return callback(new Error('[[error:not-allowed]]'));
|
||||
}
|
||||
|
||||
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 = '';
|
||||
}
|
||||
leaveCurrentRoom(socket);
|
||||
|
||||
if (data.enter) {
|
||||
rooms.enter(socket, data.enter);
|
||||
@@ -76,6 +64,24 @@ SocketMeta.rooms.enter = function(socket, data, 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) {
|
||||
var roomClients = rooms.roomClients();
|
||||
var socketData = {
|
||||
|
||||
Reference in New Issue
Block a user