diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index 365f25876..05162df81 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -1110,7 +1110,7 @@ var InternalClient = (function () { var _this30 = this; return this.resolver.resolveChannel(channel).then(function (channel) { - if (channel instanceof _StructuresServerChannel2["default"]) { + if (!channel instanceof _StructuresServerChannel2["default"]) { return Promise.reject(new Error("Not a server channel")); } @@ -1119,18 +1119,18 @@ var InternalClient = (function () { deny: 0 }; + if (role instanceof String || typeof role === "string") { + role = _this30.resolver.resolveUser(role) || _this30.resolver.resolveRole(role); + } + if (role instanceof _StructuresUser2["default"]) { data.id = role.id; data.type = "member"; - } else { - role = _this30.resolver.resolveRole(role); - - if (!(role instanceof _StructuresRole2["default"])) { - return Promise.reject(new Error("Role could not be resolved")); - } - + } else if (role instanceof _StructuresRole2["default"]) { data.id = role.id; data.type = "role"; + } else { + return Promise.reject(new Error("Role could not be resolved")); } var previousOverwrite = channel.permissionOverwrites.get("id", data.id); @@ -1141,12 +1141,15 @@ var InternalClient = (function () { } for (var perm in updated) { - if (updated[perm]) { + if (updated[perm] === true) { data.allow |= _Constants.Permissions[perm] || 0; data.deny &= ~(_Constants.Permissions[perm] || 0); - } else { + } else if (updated[perm] === false) { data.allow &= ~(_Constants.Permissions[perm] || 0); data.deny |= _Constants.Permissions[perm] || 0; + } else { + data.allow &= ~(_Constants.Permissions[perm] || 0); + data.deny &= ~(_Constants.Permissions[perm] || 0); } } @@ -1581,7 +1584,7 @@ var InternalClient = (function () { _ref10 = _i10.value; } - var server = _ref10; + var s = _ref10; if (s.members.get("id", user.id)) { found = true; @@ -1772,7 +1775,7 @@ var InternalClient = (function () { _ref11 = _i11.value; } - var server = _ref11; + var s = _ref11; if (s.members.get("id", user.id)) { found = true; diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index 5806ccbf2..baa26b9aa 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -881,7 +881,7 @@ export default class InternalClient { overwritePermissions(channel, role, updated) { return this.resolver.resolveChannel(channel) .then(channel => { - if (channel instanceof ServerChannel) { + if (!channel instanceof ServerChannel) { return Promise.reject(new Error("Not a server channel")); } @@ -890,18 +890,18 @@ export default class InternalClient { deny: 0 }; + if (role instanceof String || typeof role === "string") { + role = this.resolver.resolveUser(role) || this.resolver.resolveRole(role); + } + if (role instanceof User) { data.id = role.id; data.type = "member"; - } else { - role = this.resolver.resolveRole(role); - - if (!(role instanceof Role)) { - return Promise.reject(new Error("Role could not be resolved")); - } - + } else if (role instanceof Role) { data.id = role.id; data.type = "role"; + } else { + return Promise.reject(new Error("Role could not be resolved")); } var previousOverwrite = channel.permissionOverwrites.get("id", data.id); @@ -912,12 +912,15 @@ export default class InternalClient { } for (var perm in updated) { - if (updated[perm]) { + if (updated[perm] === true) { data.allow |= (Permissions[perm] || 0); data.deny &= ~(Permissions[perm] || 0); - } else { + } else if (updated[perm] === false) { data.allow &= ~(Permissions[perm] || 0); data.deny |= (Permissions[perm] || 0); + } else { + data.allow &= ~(Permissions[perm] || 0); + data.deny &= ~(Permissions[perm] || 0); } } @@ -1285,7 +1288,7 @@ export default class InternalClient { for (var user of server.members) { var found = false; - for (var server of self.servers) { + for (var s of self.servers) { if (s.members.get("id", user.id)) { found = true; break; @@ -1470,7 +1473,7 @@ export default class InternalClient { server.members.remove(user); server.memberCount--; var found = false; - for (var server of self.servers) { + for (var s of self.servers) { if (s.members.get("id", user.id)) { found = true; break;