Fixed server update listener

This commit is contained in:
hydrabolt
2015-11-01 14:09:00 +00:00
parent 5adcb5b8eb
commit 7175218ecf
14 changed files with 129 additions and 12 deletions

View File

@@ -543,7 +543,31 @@ var InternalClient = (function () {
client.emit("warn", "server was deleted but it was not in the cache");
}
break;
case PacketType.SERVER_UPDATE:
var server = self.servers.get("id", data.id);
if (server && !server.inasync) {
// server exists
server.inasync = true;
data.members = data.members || [];
data.channels = data.channels || [];
var newserver = new Server(data, self);
newserver.members = server.members;
newserver.memberMap = server.memberMap;
newserver.channels = server.channels;
if (newserver.equalsStrict(server)) {
// already the same don't do anything
client.emit("debug", "received server update but server already updated");
} else {
self.servers.update(server, newserver);
client.emit("serverUpdated", server, newserver);
}
server.inasync = false;
} else if (!server) {
client.emit("warn", "server was updated but it was not in the cache");
self.servers.add(new Server(data, self));
client.emit("serverCreated", server);
}
break;
}
};
};

View File

@@ -103,7 +103,9 @@ var PacketType = {
MESSAGE_CREATE: "MESSAGE_CREATE",
MESSAGE_UPDATE: "MESSAGE_UPDATE",
MESSAGE_DELETE: "MESSAGE_DELETE",
SERVER_CREATE: "GUILD_CREATE"
SERVER_CREATE: "GUILD_CREATE",
SERVER_DELETE: "GUILD_DELETE",
SERVER_UPDATE: "GUILD_UPDATE"
};
exports.API_ENDPOINT = API;

View File

@@ -13,7 +13,6 @@ var Message = (function () {
this.channel = channel;
this.client = client;
console.log("update", data);
this.nonce = data.nonce;
this.attachments = data.attachments;
this.tts = data.tts;

View File

@@ -14,6 +14,8 @@ var TextChannel = require("./TextChannel.js");
var VoiceChannel = require("./VoiceChannel.js");
var Role = require("./Role.js");
var strictKeys = ["region", "ownerID", "name", "id", "icon", "afkTimeout", "afkChannelID"];
var Server = (function (_Equality) {
_inherits(Server, _Equality);
@@ -69,6 +71,32 @@ var Server = (function (_Equality) {
return this.name;
};
Server.prototype.equalsStrict = function equalsStrict(obj) {
if (obj instanceof Server) {
for (var _iterator = strictKeys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
var key = _ref;
if (obj[key] !== this[key]) {
return false;
}
}
} else {
return false;
}
return true;
};
_createClass(Server, [{
key: "iconURL",
get: function get() {

View File

@@ -69,8 +69,9 @@ var Cache = (function (_Array) {
};
Cache.prototype.update = function update(old, data) {
var index = this.get(this.discrim, old);
if (~index) {
var item = this.get(this.discrim, old[this.discrim]);
if (item) {
var index = this.indexOf(item);
this[index] = data;
return this[index];
} else {
@@ -83,7 +84,7 @@ var Cache = (function (_Array) {
if (~index) {
this.splice(index, 1);
} else {
var item = this.get(this.discrim, data.id);
var item = this.get(this.discrim, data[this.discrim]);
if (item) {
this.splice(this.indexOf(item), 1);
}

View File

@@ -27,6 +27,11 @@ var Equality = (function () {
return false;
};
Equality.prototype.equalsStrict = function equalsStrict(object) {
// override per class type
return;
};
_createClass(Equality, [{
key: "eqDiscriminator",
get: function get() {

View File

@@ -8,6 +8,9 @@ var a = new module.exports.Client();
a.on("debug", function (m) {
return console.log("[debug]", m);
});
a.on("warn", function (m) {
return console.log("[warn]", m);
});
a.on("message", function (m) {
if (m.content === "$$$") a.internal.createServer("H a h").then(function (srv) {
@@ -15,6 +18,9 @@ a.on("message", function (m) {
a.reply(m, srv);
});
});
a.on("serverUpdated", function (oldsrv, newsrv) {
console.log(oldsrv.name, "v", newsrv.name);
});
a.login(process.env["discordEmail"], process.env["discordPass"])["catch"](function (e) {
return console.log(e);