diff --git a/public/src/app.js b/public/src/app.js index e34eb4617f..db3815073b 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -207,7 +207,6 @@ var socket, socket.emit('meta.rooms.enter', { enter: room, - leave: app.currentRoom, username: app.username, userslug: app.userslug, picture: app.picture diff --git a/src/socket.io/meta.js b/src/socket.io/meta.js index 498fe185c1..a4948e9c58 100644 --- a/src/socket.io/meta.js +++ b/src/socket.io/meta.js @@ -70,15 +70,17 @@ SocketMeta.rooms.enter = function(socket, data, callback) { return callback(new Error('[[error:invalid-data]]')); } - if (data.leave) { - socket.leave(data.leave); - if (data.leave.indexOf('topic') !== -1) { - websockets.in(data.leave).emit('event:user_leave', socket.uid); + if (socket.currentRoom) { + socket.leave(socket.currentRoom); + if (socket.currentRoom.indexOf('topic') !== -1) { + websockets.in(socket.currentRoom).emit('event:user_leave', socket.uid); } + socket.currentRoom = ''; } if (data.enter) { socket.join(data.enter); + socket.currentRoom = data.enter; if (data.enter.indexOf('topic') !== -1) { data.uid = socket.uid; websockets.in(data.enter).emit('event:user_enter', data);