Fix possible user is undefined in realtime events
This commit is contained in:
parent
1ae5f174c3
commit
d140a140de
1 changed files with 26 additions and 17 deletions
|
@ -211,6 +211,7 @@ function getStatus(callback) {
|
|||
var distinctregaddresses = [];
|
||||
Object.keys(users).forEach(function (key) {
|
||||
var user = users[key];
|
||||
if (!user) return;
|
||||
var found = false;
|
||||
for (var i = 0; i < distinctaddresses.length; i++) {
|
||||
if (user.address == distinctaddresses[i]) {
|
||||
|
@ -306,8 +307,9 @@ function emitOnlineUsers(socket) {
|
|||
|
||||
function emitUserStatus(socket) {
|
||||
var noteId = socket.noteId;
|
||||
if (!noteId || !notes[noteId]) return;
|
||||
var out = buildUserOutData(users[socket.id]);
|
||||
var user = users[socket.id];
|
||||
if (!noteId || !notes[noteId] || !user) return;
|
||||
var out = buildUserOutData(user);
|
||||
socket.broadcast.to(noteId).emit('user status', out);
|
||||
}
|
||||
|
||||
|
@ -532,7 +534,9 @@ function disconnect(socket) {
|
|||
var note = notes[noteId];
|
||||
if (note) {
|
||||
// delete user in users
|
||||
if (note.users[socket.id]) {
|
||||
delete note.users[socket.id];
|
||||
}
|
||||
// remove sockets in the note socks
|
||||
do {
|
||||
var index = note.socks.indexOf(socket);
|
||||
|
@ -649,14 +653,14 @@ function operationCallback(socket, operation) {
|
|||
var userId = null;
|
||||
// save authors
|
||||
if (socket.request.user && socket.request.user.logged_in) {
|
||||
var socketId = socket.id;
|
||||
var user = users[socketId];
|
||||
var user = users[socket.id];
|
||||
if (!user) return;
|
||||
userId = socket.request.user.id;
|
||||
if (!note.authors[userId]) {
|
||||
models.Author.create({
|
||||
noteId: noteId,
|
||||
userId: userId,
|
||||
color: users[socketId].color
|
||||
color: user.color
|
||||
}).then(function (author) {
|
||||
note.authors[author.userId] = {
|
||||
userid: author.userId,
|
||||
|
@ -743,11 +747,11 @@ function connection(socket) {
|
|||
//received user status
|
||||
socket.on('user status', function (data) {
|
||||
var noteId = socket.noteId;
|
||||
if (!noteId || !notes[noteId]) return;
|
||||
var user = users[socket.id];
|
||||
if (!noteId || !notes[noteId] || !user) return;
|
||||
if (config.debug)
|
||||
logger.info('SERVER received [' + noteId + '] user status from [' + socket.id + ']: ' + JSON.stringify(data));
|
||||
if (data) {
|
||||
var user = users[socket.id];
|
||||
user.idle = data.idle;
|
||||
user.type = data.type;
|
||||
}
|
||||
|
@ -840,7 +844,9 @@ function connection(socket) {
|
|||
logger.info('user changed');
|
||||
var noteId = socket.noteId;
|
||||
if (!noteId || !notes[noteId]) return;
|
||||
updateUserData(socket, notes[noteId].users[socket.id]);
|
||||
var user = notes[noteId].users[socket.id];
|
||||
if (!user) return;
|
||||
updateUserData(socket, user);
|
||||
emitOnlineUsers(socket);
|
||||
});
|
||||
|
||||
|
@ -872,26 +878,29 @@ function connection(socket) {
|
|||
//received cursor focus
|
||||
socket.on('cursor focus', function (data) {
|
||||
var noteId = socket.noteId;
|
||||
if (!noteId || !notes[noteId]) return;
|
||||
users[socket.id].cursor = data;
|
||||
var out = buildUserOutData(users[socket.id]);
|
||||
var user = users[socket.id];
|
||||
if (!noteId || !notes[noteId] || !user) return;
|
||||
user.cursor = data;
|
||||
var out = buildUserOutData(user);
|
||||
socket.broadcast.to(noteId).emit('cursor focus', out);
|
||||
});
|
||||
|
||||
//received cursor activity
|
||||
socket.on('cursor activity', function (data) {
|
||||
var noteId = socket.noteId;
|
||||
if (!noteId || !notes[noteId]) return;
|
||||
users[socket.id].cursor = data;
|
||||
var out = buildUserOutData(users[socket.id]);
|
||||
var user = users[socket.id];
|
||||
if (!noteId || !notes[noteId] || !user) return;
|
||||
user.cursor = data;
|
||||
var out = buildUserOutData(user);
|
||||
socket.broadcast.to(noteId).emit('cursor activity', out);
|
||||
});
|
||||
|
||||
//received cursor blur
|
||||
socket.on('cursor blur', function () {
|
||||
var noteId = socket.noteId;
|
||||
if (!noteId || !notes[noteId]) return;
|
||||
users[socket.id].cursor = null;
|
||||
var user = users[socket.id];
|
||||
if (!noteId || !notes[noteId] || !user) return;
|
||||
user.cursor = null;
|
||||
var out = {
|
||||
id: socket.id
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue