From 4386daf7a095b5cc6d3acb3ddfa5b7197650953b Mon Sep 17 00:00:00 2001 From: Brandon Russell Date: Sat, 19 Mar 2016 23:02:22 -0500 Subject: [PATCH 1/3] Added ability to use updateDetails() with token --- lib/Client/InternalClient.js | 5 ++++- src/Client/InternalClient.js | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index e813048a5..3f90e1864 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -1220,7 +1220,10 @@ var InternalClient = (function () { InternalClient.prototype.updateDetails = function updateDetails(data) { if (!this.email && !data.email) { - throw new Error("Can't use updateDetails because only a token has been used for login!"); + return this.apiRequest("patch", _Constants.Endpoints.ME, true, { + avatar: this.resolver.resolveToBase64(data.avatar) || this.user.avatar, + username: data.username || this.user.username + }); } return this.apiRequest("patch", _Constants.Endpoints.ME, true, { avatar: this.resolver.resolveToBase64(data.avatar) || this.user.avatar, diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index b5594bd6c..cf2d72780 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -1006,7 +1006,10 @@ export default class InternalClient { //def updateDetails updateDetails(data) { if (!this.email && !data.email) { - throw new Error("Can't use updateDetails because only a token has been used for login!"); + return this.apiRequest("patch", Endpoints.ME, true, { + avatar: this.resolver.resolveToBase64(data.avatar) || this.user.avatar, + username: data.username || this.user.username + }); } return this.apiRequest("patch", Endpoints.ME, true, { avatar: this.resolver.resolveToBase64(data.avatar) || this.user.avatar, From 72340845e56c3bf557c502f05e259e0b6d8502e0 Mon Sep 17 00:00:00 2001 From: Brandon Russell Date: Sat, 19 Mar 2016 23:14:28 -0500 Subject: [PATCH 2/3] Add email and password if non-token login --- lib/Client/InternalClient.js | 21 ++++++++++----------- src/Client/InternalClient.js | 21 ++++++++++----------- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index 3f90e1864..ed1173520 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -1219,19 +1219,18 @@ var InternalClient = (function () { //def updateDetails InternalClient.prototype.updateDetails = function updateDetails(data) { - if (!this.email && !data.email) { - return this.apiRequest("patch", _Constants.Endpoints.ME, true, { - avatar: this.resolver.resolveToBase64(data.avatar) || this.user.avatar, - username: data.username || this.user.username - }); - } - return this.apiRequest("patch", _Constants.Endpoints.ME, true, { + var options = { avatar: this.resolver.resolveToBase64(data.avatar) || this.user.avatar, - email: data.email || this.email, - new_password: data.newPassword || null, - password: data.password || this.password, username: data.username || this.user.username - }); + }; + + if (this.email || data.email) { + options.email = data.email || this.email; + options.new_password = data.newPassword || null; + options.password = data.password || this.password; + } + + return this.apiRequest("patch", _Constants.Endpoints.ME, true, options); }; //def setAvatar diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index cf2d72780..ee46f422a 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -1005,19 +1005,18 @@ export default class InternalClient { //def updateDetails updateDetails(data) { - if (!this.email && !data.email) { - return this.apiRequest("patch", Endpoints.ME, true, { - avatar: this.resolver.resolveToBase64(data.avatar) || this.user.avatar, - username: data.username || this.user.username - }); - } - return this.apiRequest("patch", Endpoints.ME, true, { + var options = { avatar: this.resolver.resolveToBase64(data.avatar) || this.user.avatar, - email: data.email || this.email, - new_password: data.newPassword || null, - password: data.password || this.password, username: data.username || this.user.username - }); + } + + if (this.email || data.email) { + options.email = data.email || this.email; + options.new_password = data.newPassword || null; + options.password = data.password || this.password; + } + + return this.apiRequest("patch", Endpoints.ME, true, options); } //def setAvatar From 93e31064042f26f619e78319a3ccd8100baac9a9 Mon Sep 17 00:00:00 2001 From: Brandon Russell Date: Sun, 20 Mar 2016 00:19:29 -0500 Subject: [PATCH 3/3] Check if user or bot and require email for user --- lib/Client/InternalClient.js | 2 ++ src/Client/InternalClient.js | 3 +++ 2 files changed, 5 insertions(+) diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index ed1173520..4352c6045 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -1219,6 +1219,8 @@ var InternalClient = (function () { //def updateDetails InternalClient.prototype.updateDetails = function updateDetails(data) { + if (!this.bot && !(this.email || data.email)) throw new Error("Must provide email since a token was used to login"); + var options = { avatar: this.resolver.resolveToBase64(data.avatar) || this.user.avatar, username: data.username || this.user.username diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index ee46f422a..22793b698 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -1005,6 +1005,9 @@ export default class InternalClient { //def updateDetails updateDetails(data) { + if (!this.bot && !(this.email || data.email)) + throw new Error("Must provide email since a token was used to login"); + var options = { avatar: this.resolver.resolveToBase64(data.avatar) || this.user.avatar, username: data.username || this.user.username