mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-11 00:15:46 +01:00
re: issue #652, this took longer than expected...
This commit is contained in:
@@ -51,6 +51,32 @@ var socket,
|
|||||||
reconnectEl.html('<i class="fa fa-check"></i>');
|
reconnectEl.html('<i class="fa fa-check"></i>');
|
||||||
reconnecting = false;
|
reconnecting = false;
|
||||||
|
|
||||||
|
// Rejoin room that was left when we disconnected
|
||||||
|
var url_parts = document.location.pathname.slice(RELATIVE_PATH.length).split('/').slice(1),
|
||||||
|
room;
|
||||||
|
switch(url_parts[0]) {
|
||||||
|
case 'user':
|
||||||
|
room = 'user/' + templates.get('theirid');
|
||||||
|
case 'topic':
|
||||||
|
room = 'topic_' + url_parts[1];
|
||||||
|
break;
|
||||||
|
case 'category':
|
||||||
|
room = 'category_' + url_parts[1];
|
||||||
|
break;
|
||||||
|
case 'recent': // intentional fall-through
|
||||||
|
case 'unread':
|
||||||
|
room = 'recent_posts';
|
||||||
|
break;
|
||||||
|
case 'admin':
|
||||||
|
room = 'admin';
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
room = 'global';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
app.enterRoom(room, true);
|
||||||
|
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
reconnectEl.removeClass('active');
|
reconnectEl.removeClass('active');
|
||||||
}, 3000);
|
}, 3000);
|
||||||
@@ -248,9 +274,9 @@ var socket,
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
app.enterRoom = function (room) {
|
app.enterRoom = function (room, force) {
|
||||||
if (socket) {
|
if (socket) {
|
||||||
if (app.currentRoom === room) {
|
if (app.currentRoom === room && !force) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -163,9 +163,8 @@ websockets.init = function(io) {
|
|||||||
return anonCount;
|
return anonCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
var uids = getUidsInRoom(rooms[roomName]);
|
var uids = getUidsInRoom(rooms[roomName]),
|
||||||
|
anonymousCount = getAnonymousCount(roomName);
|
||||||
var anonymousCount = getAnonymousCount(roomName);
|
|
||||||
|
|
||||||
if (uids.length === 0) {
|
if (uids.length === 0) {
|
||||||
io.sockets.in(roomName).emit('api:get_users_in_room', { users: [], anonymousCount: anonymousCount });
|
io.sockets.in(roomName).emit('api:get_users_in_room', { users: [], anonymousCount: anonymousCount });
|
||||||
@@ -184,19 +183,19 @@ websockets.init = function(io) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
socket.join(data.enter);
|
socket.join(data.enter);
|
||||||
|
|
||||||
rooms[data.enter] = rooms[data.enter] || {};
|
rooms[data.enter] = rooms[data.enter] || {};
|
||||||
|
|
||||||
if (uid) {
|
if (uid) {
|
||||||
rooms[data.enter][socket.id] = uid;
|
rooms[data.enter][socket.id] = uid;
|
||||||
|
|
||||||
if (data.leave && rooms[data.leave] && rooms[data.leave][socket.id]) {
|
if (data.leave && rooms[data.leave] && rooms[data.leave][socket.id] && data.enter !== data.leave) {
|
||||||
delete rooms[data.leave][socket.id];
|
delete rooms[data.leave][socket.id];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.leave)
|
if (data.leave) {
|
||||||
updateRoomBrowsingText(data.leave);
|
updateRoomBrowsingText(data.leave);
|
||||||
|
}
|
||||||
|
|
||||||
updateRoomBrowsingText(data.enter);
|
updateRoomBrowsingText(data.enter);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user