diff --git a/lib/Client/Client.js b/lib/Client/Client.js index 0939e2938..5a014cb4e 100644 --- a/lib/Client/Client.js +++ b/lib/Client/Client.js @@ -621,16 +621,21 @@ var Client = (function (_EventEmitter) { // def updateServer - Client.prototype.updateServer = function updateServer(server, name, region) { + Client.prototype.updateServer = function updateServer(server, options, region) { var callback = arguments.length <= 3 || arguments[3] === undefined ? function () /*err, srv*/{} : arguments[3]; if (typeof region === "function") { // region is the callback callback = region; region = undefined; + } else if (region && typeof options === "string") { + options = { + name: options, + region: region + }; } - return this.internal.updateServer(server, name, region).then(dataCallback(callback), errorCallback(callback)); + return this.internal.updateServer(server, options).then(dataCallback(callback), errorCallback(callback)); }; /** diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index 805442d23..69c91cbd1 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -190,6 +190,7 @@ var InternalClient = (function () { // creates 4 caches with discriminators based on ID this.users = new _UtilCache2["default"](); this.friends = new _UtilCache2["default"](); + this.blocked_users = new _UtilCache2["default"](); this.outgoing_friend_requests = new _UtilCache2["default"](); this.incoming_friend_requests = new _UtilCache2["default"](); this.channels = new _UtilCache2["default"](); @@ -1366,7 +1367,9 @@ var InternalClient = (function () { //def updateDetails InternalClient.prototype.updateDetails = function updateDetails(data) { - if (!this.user.bot && !(this.email || data.email)) throw new Error("Must provide email since a token was used to login"); + if (!this.user.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, @@ -1598,7 +1601,7 @@ var InternalClient = (function () { self.getGuildMembers(server.id, Math.ceil(server.memberCount / 1000)); } } else { - client.emit("warn", "server " + server.id + " was unavailable, could not create (ready)"); + client.emit("debug", "server " + server.id + " was unavailable, could not create (ready)"); self.unavailableServers.add(server); } }); @@ -1611,6 +1614,9 @@ var InternalClient = (function () { if (friend.type === 1) { // is a friend self.friends.add(new _StructuresUser2["default"](friend.user, client)); + } else if (friend.type === 2) { + // incoming friend requests + self.blocked_users.add(new _StructuresUser2["default"](friend.user, client)); } else if (friend.type === 3) { // incoming friend requests self.incoming_friend_requests.add(new _StructuresUser2["default"](friend.user, client)); @@ -1623,6 +1629,7 @@ var InternalClient = (function () { }); } else { self.friends = null; + self.blocked_users = null; self.incoming_friend_requests = null; self.outgoing_friend_requests = null; } @@ -1663,7 +1670,7 @@ var InternalClient = (function () { if (msg) { channel.messages.remove(msg); } else { - client.emit("warn", "message was deleted but message is not cached"); + client.emit("debug", "message was deleted but message is not cached"); } } else { client.emit("warn", "message was deleted but channel is not cached"); @@ -1712,7 +1719,7 @@ var InternalClient = (function () { } self.restartServerCreateTimeout(); } else { - client.emit("warn", "server was unavailable, could not create"); + client.emit("debug", "server was unavailable, could not create"); } } break; @@ -1780,7 +1787,7 @@ var InternalClient = (function () { } } } else { - client.emit("warn", "server was unavailable, could not update"); + client.emit("debug", "server was unavailable, could not update"); } } else { client.emit("warn", "server was deleted but it was not in the cache"); @@ -2198,6 +2205,9 @@ var InternalClient = (function () { client.emit("friendRequestAccepted", outUser); return; } + } else if (data.type === 2) { + // client received block + self.blocked_users.add(new _StructuresUser2["default"](data.user, client)); } else if (data.type === 3) { // client received friend request client.emit("friendRequestReceived", self.incoming_friend_requests.add(new _StructuresUser2["default"](data.user, client))); @@ -2214,6 +2224,13 @@ var InternalClient = (function () { return; } + user = self.blocked_users.get("id", data.id); + if (user) { + // they rejected friend request + self.blocked_users.remove(user); + return; + } + user = self.incoming_friend_requests.get("id", data.id); if (user) { // they rejected friend request diff --git a/src/Client/Client.js b/src/Client/Client.js index 7c7ba52a9..b827ecedf 100644 --- a/src/Client/Client.js +++ b/src/Client/Client.js @@ -706,14 +706,19 @@ export default class Client extends EventEmitter { } // def updateServer - updateServer(server, name, region, callback = (/*err, srv*/) => { }) { + updateServer(server, options, region, callback = (/*err, srv*/) => { }) { if (typeof region === "function") { // region is the callback callback = region; region = undefined; + } else if (region && typeof options === "string") { + options = { + name: options, + region: region + }; } - return this.internal.updateServer(server, name, region) + return this.internal.updateServer(server, options) .then(dataCallback(callback), errorCallback(callback)); } diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index da8058437..29b35aee5 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -127,6 +127,7 @@ export default class InternalClient { // creates 4 caches with discriminators based on ID this.users = new Cache(); this.friends = new Cache(); + this.blocked_users = new Cache(); this.outgoing_friend_requests = new Cache(); this.incoming_friend_requests = new Cache(); this.channels = new Cache(); @@ -1151,8 +1152,9 @@ export default class InternalClient { //def updateDetails updateDetails(data) { - if (!this.user.bot && !(this.email || data.email)) + if (!this.user.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, @@ -1359,7 +1361,7 @@ export default class InternalClient { self.getGuildMembers(server.id, Math.ceil(server.memberCount / 1000)); } } else { - client.emit("warn", "server " + server.id + " was unavailable, could not create (ready)"); + client.emit("debug", "server " + server.id + " was unavailable, could not create (ready)"); self.unavailableServers.add(server); } }); @@ -1370,6 +1372,8 @@ export default class InternalClient { data.relationships.forEach(friend => { if (friend.type === 1) { // is a friend self.friends.add(new User(friend.user, client)); + } else if (friend.type === 2) { // incoming friend requests + self.blocked_users.add(new User(friend.user, client)); } else if (friend.type === 3) { // incoming friend requests self.incoming_friend_requests.add(new User(friend.user, client)); } else if (friend.type === 4) { // outgoing friend requests @@ -1380,6 +1384,7 @@ export default class InternalClient { }); } else { self.friends = null; + self.blocked_users = null; self.incoming_friend_requests = null; self.outgoing_friend_requests = null; } @@ -1418,7 +1423,7 @@ export default class InternalClient { if (msg) { channel.messages.remove(msg); } else { - client.emit("warn", "message was deleted but message is not cached"); + client.emit("debug", "message was deleted but message is not cached"); } } else { client.emit("warn", "message was deleted but channel is not cached"); @@ -1467,7 +1472,7 @@ export default class InternalClient { } self.restartServerCreateTimeout(); } else { - client.emit("warn", "server was unavailable, could not create"); + client.emit("debug", "server was unavailable, could not create"); } } break; @@ -1496,7 +1501,7 @@ export default class InternalClient { } } } else { - client.emit("warn", "server was unavailable, could not update"); + client.emit("debug", "server was unavailable, could not update"); } } else { client.emit("warn", "server was deleted but it was not in the cache"); @@ -1893,6 +1898,9 @@ export default class InternalClient { client.emit("friendRequestAccepted", outUser); return; } + } else if (data.type === 2) { + // client received block + self.blocked_users.add(new User(data.user, client)); } else if (data.type === 3) { // client received friend request client.emit("friendRequestReceived", self.incoming_friend_requests.add(new User(data.user, client))); @@ -1909,6 +1917,12 @@ export default class InternalClient { return; } + user = self.blocked_users.get("id", data.id); + if (user) { // they rejected friend request + self.blocked_users.remove(user); + return; + } + user = self.incoming_friend_requests.get("id", data.id); if (user) { // they rejected friend request client.emit("friendRequestRejected", self.outgoing_friend_requests.remove(user));