From cffdb5f5f6031ba8bbf8448eb4b8f8889111d206 Mon Sep 17 00:00:00 2001 From: abalabahaha Date: Tue, 12 Jan 2016 14:59:45 -0800 Subject: [PATCH] Improvement upon addMemberToRoles and build --- lib/Client/InternalClient.js | 16 +++++++++++----- src/Client/InternalClient.js | 18 +++++------------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index d750396bf..857e25290 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -795,16 +795,22 @@ var InternalClient = (function () { return Promise.reject(new Error("invalid array of roles")); } - var roleIDS = roles[0].server.memberMap[member.id].roles.map(function (r) { - return r.id; - }); - - if (roles.any(function (role) { + if (roles.some(function (role) { return !role.server.memberMap[member.id]; })) { return Promise.reject(new Error("Role does not exist on same server as member")); } + var roleIDS = roles[0].server.memberMap[member.id].roles.map(function (r) { + return r.id; + }); + + for (var i = 0; i < roles.length; i++) { + if (! ~roleIDs.indexOf(roles[i].id)) { + roleIDS.push(roles[i].id); + }; + }; + return this.apiRequest("patch", _Constants.Endpoints.SERVER_MEMBERS(role.server.id) + "/" + member.id, true, { roles: roleIDS }); diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index 5fd80b904..d9ff1e314 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -656,26 +656,18 @@ export default class InternalClient { return Promise.reject(new Error("invalid array of roles")); } + if (roles.some(role => !role.server.memberMap[member.id])) { + return Promise.reject(new Error("Role does not exist on same server as member")); + } + var roleIDS = roles[0].server.memberMap[member.id].roles.map(r => r.id); - var currentMemberRoles = roles[0].server.memberMap[member.id].roles; for (var i = 0; i < roles.length; i++) { - var alreadyHasRole = currentMemberRoles.some(function(currentValue) { - if (currentValue.id === roles[i].id) { - return true; - }; - }); - if (!alreadyHasRole) { + if (!~roleIDs.indexOf(roles[i].id)) { roleIDS.push(roles[i].id); }; }; - if (roles.some(function(role) { - return !role.server.memberMap[member.id]; - })) { - return Promise.reject(new Error("Role does not exist on same server as member")); - } - return this.apiRequest( "patch", `${Endpoints.SERVER_MEMBERS(role.server.id)}/${member.id}`,