From af333ef4ccc33fb1ccef867e9b946d5bf457cc1f Mon Sep 17 00:00:00 2001 From: abalabahaha Date: Sun, 8 May 2016 00:16:20 -0700 Subject: [PATCH] Some fixes --- lib/Client/InternalClient.js | 22 +++++++++++++--------- lib/Structures/ServerChannel.js | 10 +++++++--- src/Client/InternalClient.js | 22 +++++++++++++--------- src/Structures/ServerChannel.js | 10 +++++++--- src/Util/Cache.js | 4 ++-- 5 files changed, 42 insertions(+), 26 deletions(-) diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index 63ab6dfdf..0fe197084 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -2088,15 +2088,19 @@ var InternalClient = (function () { if (server) { var user = self.users.add(new _StructuresUser2["default"](data.user, client)); if (user) { - var oldMember = { - roles: server.memberMap[data.user.id].roles, - mute: server.memberMap[data.user.id].mute, - selfMute: server.memberMap[data.user.id].selfMute, - deaf: server.memberMap[data.user.id].deaf, - selfDeaf: server.memberMap[data.user.id].selfDeaf, - nick: server.memberMap[data.user.id].nick - }; - server.memberMap[data.user.id] = server.memberMap[data.user.id] || {}; + var oldMember = null; + if (server.memberMap[data.user.id]) { + oldMember = { + roles: server.memberMap[data.user.id].roles, + mute: server.memberMap[data.user.id].mute, + selfMute: server.memberMap[data.user.id].selfMute, + deaf: server.memberMap[data.user.id].deaf, + selfDeaf: server.memberMap[data.user.id].selfDeaf, + nick: server.memberMap[data.user.id].nick + }; + } else { + server.memberMap[data.user.id] = {}; + } server.memberMap[data.user.id].roles = data.roles.map(function (pid) { return server.roles.get("id", pid); }); diff --git a/lib/Structures/ServerChannel.js b/lib/Structures/ServerChannel.js index 77bfc37a2..4385adaed 100644 --- a/lib/Structures/ServerChannel.js +++ b/lib/Structures/ServerChannel.js @@ -88,7 +88,9 @@ var ServerChannel = (function (_Channel) { var serverRole = _ref; - permissions |= serverRole.permissions; + if (serverRole) { + permissions |= serverRole.permissions; + } } for (var _iterator2 = roleOverwrites.concat(memberOverwrites), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { @@ -105,8 +107,10 @@ var ServerChannel = (function (_Channel) { var overwrite = _ref2; - permissions = permissions & ~overwrite.deny; - permissions = permissions | overwrite.allow; + if (overwrite) { + permissions = permissions & ~overwrite.deny; + permissions = permissions | overwrite.allow; + } } return new _ChannelPermissions2["default"](permissions); diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index a7b3e20c9..0157d3367 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -1786,15 +1786,19 @@ export default class InternalClient { if (server) { var user = self.users.add(new User(data.user, client)); if (user) { - var oldMember = { - roles: server.memberMap[data.user.id].roles, - mute: server.memberMap[data.user.id].mute, - selfMute: server.memberMap[data.user.id].selfMute, - deaf: server.memberMap[data.user.id].deaf, - selfDeaf: server.memberMap[data.user.id].selfDeaf, - nick: server.memberMap[data.user.id].nick - }; - server.memberMap[data.user.id] = server.memberMap[data.user.id] || {}; + var oldMember = null; + if (server.memberMap[data.user.id]) { + oldMember = { + roles: server.memberMap[data.user.id].roles, + mute: server.memberMap[data.user.id].mute, + selfMute: server.memberMap[data.user.id].selfMute, + deaf: server.memberMap[data.user.id].deaf, + selfDeaf: server.memberMap[data.user.id].selfDeaf, + nick: server.memberMap[data.user.id].nick + }; + } else { + server.memberMap[data.user.id] = {}; + } server.memberMap[data.user.id].roles = data.roles.map(pid => server.roles.get("id", pid)); server.memberMap[data.user.id].mute = data.mute; server.memberMap[data.user.id].selfMute = data.self_mute; diff --git a/src/Structures/ServerChannel.js b/src/Structures/ServerChannel.js index eadde0612..79e4fdf9c 100644 --- a/src/Structures/ServerChannel.js +++ b/src/Structures/ServerChannel.js @@ -44,12 +44,16 @@ export default class ServerChannel extends Channel{ var permissions = 0; for(var serverRole of userRoles){ - permissions |= serverRole.permissions; + if (serverRole) { + permissions |= serverRole.permissions; + } } for(var overwrite of roleOverwrites.concat(memberOverwrites)){ - permissions = permissions & ~overwrite.deny; - permissions = permissions | overwrite.allow; + if (overwrite) { + permissions = permissions & ~overwrite.deny; + permissions = permissions | overwrite.allow; + } } return new ChannelPermissions(permissions); diff --git a/src/Util/Cache.js b/src/Util/Cache.js index a47204c73..9cbf6dc91 100644 --- a/src/Util/Cache.js +++ b/src/Util/Cache.js @@ -97,8 +97,8 @@ export default class Cache extends Array { remove(data) { delete this[discrimCacheS][data[this[discrimS]]]; - for(var i in this) { - if(this[i] && this[i][this[discrimS]] === data[this[discrimS]]) { + for (var i in this) { + if (this[i] && this[i][this[discrimS]] === data[this[discrimS]]) { this.splice(i, 1); return true; }