From 8cb912090fd2f7ae070c92d3d022a6a09d8ab4e3 Mon Sep 17 00:00:00 2001 From: abalabahaha Date: Sun, 22 Nov 2015 20:25:52 -0800 Subject: [PATCH] Don't overwrite permissions in updateRole if they aren't passed --- lib/Client/InternalClient.js | 57 ++++++++++++++++++------------------ src/Client/InternalClient.js | 31 ++++++++++---------- 2 files changed, 45 insertions(+), 43 deletions(-) diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index 0328c6c2e..78e6f5a6e 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -675,41 +675,42 @@ var InternalClient = (function () { InternalClient.prototype.updateRole = function updateRole(role, data) { var self = this; data = data || {}; - data.permissions = data.permissions || []; return new Promise(function (resolve, reject) { var server = self.resolver.resolveServer(role.server); - var permissions = 0; - for (var _iterator2 = data.permissions, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { - var _ref2; - - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref2 = _iterator2[_i2++]; - } else { - _i2 = _iterator2.next(); - if (_i2.done) break; - _ref2 = _i2.value; - } - - var perm = _ref2; - - if (perm instanceof String || typeof perm === "string") { - permissions |= Constants.Permissions[perm] || 0; - } else { - permissions |= perm; - } - } - - data.color = data.color || 0; - - request.patch(Endpoints.SERVER_ROLES(server.id) + "/" + role.id).set("authorization", self.token).send({ + var newData = { color: data.color || role.color, hoist: data.hoist || role.hoist, name: data.name || role.name, - permissions: permissions - }).end(function (err, res) { + permissions: role.permissions || 0 + }; + + if (data.permissions) { + newData.permissions = 0; + for (var _iterator2 = data.permissions, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + var _ref2; + + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref2 = _iterator2[_i2++]; + } else { + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref2 = _i2.value; + } + + var perm = _ref2; + + if (perm instanceof String || typeof perm === "string") { + newData.permissions |= Constants.Permissions[perm] || 0; + } else { + newData.permissions |= perm; + } + } + } + + request.patch(Endpoints.SERVER_ROLES(server.id) + "/" + role.id).set("authorization", self.token).send(newData).end(function (err, res) { if (err) { reject(err); } else { diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index b826bf033..d923bd496 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -723,31 +723,32 @@ class InternalClient { updateRole(role, data) { var self = this; data = data || {}; - data.permissions = data.permissions || []; return new Promise((resolve, reject) => { var server = self.resolver.resolveServer(role.server); - var permissions = 0; - for (var perm of data.permissions) { - if (perm instanceof String || typeof perm === "string") { - permissions |= (Constants.Permissions[perm] || 0); - } else { - permissions |= perm; + var newData = { + color: data.color || role.color, + hoist: data.hoist || role.hoist, + name: data.name || role.name, + permissions: role.permissions || 0 + }; + + if(data.permissions) { + newData.permissions = 0; + for (var perm of data.permissions) { + if (perm instanceof String || typeof perm === "string") { + newData.permissions |= (Constants.Permissions[perm] || 0); + } else { + newData.permissions |= perm; + } } } - data.color = data.color || 0; - request .patch(Endpoints.SERVER_ROLES(server.id) + "/" + role.id) .set("authorization", self.token) - .send({ - color: data.color || role.color, - hoist: data.hoist || role.hoist, - name: data.name || role.name, - permissions: permissions - }) + .send(newData) .end((err, res) => { if (err) { reject(err);