From 5adcb5b8ebcd0eaba1f106fe25806c09a1baa93f Mon Sep 17 00:00:00 2001 From: hydrabolt Date: Sun, 1 Nov 2015 13:39:20 +0000 Subject: [PATCH] Fixed serverDelete implementation and added lsitener --- lib/Client/InternalClient.js | 31 ++++++++++++++++++++++++++++++- src/Client/InternalClient.js | 19 ++++++++++++++++++- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/lib/Client/InternalClient.js b/lib/Client/InternalClient.js index 5f31e0466..ab4ebe3f2 100644 --- a/lib/Client/InternalClient.js +++ b/lib/Client/InternalClient.js @@ -96,7 +96,7 @@ var InternalClient = (function () { var chan = _ref; - server.channels.remove(chan); + self.channels.remove(chan); } // remove server self.servers.remove(server); @@ -513,8 +513,37 @@ var InternalClient = (function () { var server = self.servers.get("id", data.id); if (!server) { self.servers.add(new Server(data, client)); + client.emit("serverCreated", server); } break; + case PacketType.SERVER_DELETE: + var server = self.servers.get("id", data.id); + if (server) { + + for (var _iterator2 = server.channels, _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 channel = _ref2; + + self.channels.remove(channel); + } + + self.servers.remove(server); + client.emit("serverDeleted", server); + } else { + client.emit("warn", "server was deleted but it was not in the cache"); + } + break; + } }; }; diff --git a/src/Client/InternalClient.js b/src/Client/InternalClient.js index f2151ff1f..f2327bc99 100644 --- a/src/Client/InternalClient.js +++ b/src/Client/InternalClient.js @@ -81,7 +81,7 @@ class InternalClient { }else{ // remove channels of server then the server for(var chan of server.channels){ - server.channels.remove(chan); + self.channels.remove(chan); } // remove server self.servers.remove(server); @@ -543,8 +543,25 @@ class InternalClient { var server = self.servers.get("id", data.id); if(!server){ self.servers.add(new Server(data, client)); + client.emit("serverCreated", server); } break; + case PacketType.SERVER_DELETE: + var server = self.servers.get("id", data.id); + if(server){ + + for(var channel of server.channels){ + self.channels.remove(channel); + } + + self.servers.remove(server); + client.emit("serverDeleted", server); + + }else{ + client.emit("warn", "server was deleted but it was not in the cache"); + } + break; + } } }