Let overwritePermissions keep existing permissions

This commit is contained in:
abalabahaha
2016-03-19 22:03:17 -07:00
parent 583906fe81
commit afdb93b3d6
2 changed files with 53 additions and 52 deletions

View File

@@ -42,6 +42,10 @@ var _StructuresChannel = require("../Structures/Channel");
var _StructuresChannel2 = _interopRequireDefault(_StructuresChannel);
var _StructuresServerChannel = require("../Structures/ServerChannel");
var _StructuresServerChannel2 = _interopRequireDefault(_StructuresServerChannel);
var _StructuresTextChannel = require("../Structures/TextChannel");
var _StructuresTextChannel2 = _interopRequireDefault(_StructuresTextChannel);
@@ -1106,43 +1110,41 @@ var InternalClient = (function () {
var _this30 = this;
return this.resolver.resolveChannel(channel).then(function (channel) {
var user;
if (role instanceof _StructuresUser2["default"]) {
user = role;
} else {
role = _this30.resolver.resolveRole(role);
if (channel instanceof _StructuresServerChannel2["default"]) {
return Promise.reject(new Error("Not a server channel"));
}
var data = {};
data.allow = 0;
data.deny = 0;
var data = {
allow: 0,
deny: 0
};
updated.allow = updated.allow || [];
updated.deny = updated.deny || [];
if (role instanceof _StructuresRole2["default"]) {
if (role instanceof _StructuresUser2["default"]) {
data.id = role.id;
data.type = "role";
} else if (user) {
data.id = user.id;
data.type = "member";
} else {
throw new Error("role incorrect");
role = _this30.resolver.resolveRole(role);
if (!(role instanceof _StructuresRole2["default"])) {
return Promise.reject(new Error("Role could not be resolved"));
}
data.id = role.id;
data.type = "role";
}
var previousOverwrite = channel.permissionOverwrites.get("id", data.id);
if (previousOverwrite) {
data.allow |= previousOverwrite.allow;
data.deny |= previousOverwrite.deny;
}
for (var perm in updated) {
if (updated[perm]) {
if (perm instanceof String || typeof perm === "string") {
data.allow |= _Constants.Permissions[perm] || 0;
} else {
data.allow |= perm;
}
data.allow |= _Constants.Permissions[perm] || 0;
} else {
if (perm instanceof String || typeof perm === "string") {
data.deny |= _Constants.Permissions[perm] || 0;
} else {
data.deny |= perm;
}
data.deny |= _Constants.Permissions[perm] || 0;
}
}