Fix login, clone objects when firing x-Updated events

This commit is contained in:
abalabahaha
2016-01-24 16:41:35 -08:00
parent 2c6cbb6675
commit 2c17eaed02
12 changed files with 39 additions and 37 deletions

View File

@@ -434,7 +434,7 @@ var InternalClient = (function () {
var tk = this.tokenCacher.getToken(email, password);
if (tk) {
this.client.emit("debug", "bypassed direct API login, used cached token");
return loginWithToken(tk, email, password);
return this.loginWithToken(tk, email, password);
}
}
@@ -1386,7 +1386,7 @@ var InternalClient = (function () {
data.mentions = data.mentions || msg.mentions;
data.author = data.author || msg.author;
var nmsg = new _StructuresMessage2["default"](data, channel, client);
client.emit("messageUpdated", nmsg, msg);
client.emit("messageUpdated", new _StructuresMessage2["default"](msg, channel, client), nmsg);
channel.messages.update(msg, nmsg);
}
} else {
@@ -1449,8 +1449,8 @@ var InternalClient = (function () {
// already the same don't do anything
client.emit("debug", "received server update but server already updated");
} else {
client.emit("serverUpdated", new _StructuresServer2["default"](server, client), newserver);
self.servers.update(server, newserver);
client.emit("serverUpdated", server, newserver);
}
} else if (!server) {
client.emit("warn", "server was updated but it was not in the cache");
@@ -1502,22 +1502,22 @@ var InternalClient = (function () {
if (channel instanceof _StructuresPMChannel2["default"]) {
//PM CHANNEL
client.emit("channelUpdated", channel, self.private_channels.update(channel, new _StructuresPMChannel2["default"](data, client)));
client.emit("channelUpdated", new _StructuresPMChannel2["default"](channel, client), self.private_channels.update(channel, new _StructuresPMChannel2["default"](data, client)));
} else {
if (channel.server) {
if (channel.type === "text") {
//TEXT CHANNEL
var chan = new _StructuresTextChannel2["default"](data, client, channel.server);
chan.messages = channel.messages;
client.emit("channelUpdated", channel, chan);
channel.server.channels.update(channel, chan);
self.channels.update(channel, chan);
client.emit("channelUpdated", channel, chan);
} else {
//VOICE CHANNEL
var chan = new _StructuresVoiceChannel2["default"](data, client, channel.server);
client.emit("channelUpdated", channel, chan);
channel.server.channels.update(channel, chan);
self.channels.update(channel, chan);
client.emit("channelUpdated", channel, chan);
}
} else {
client.emit("warn", "channel updated but server non-existant");
@@ -1555,8 +1555,8 @@ var InternalClient = (function () {
var role = server.roles.get("id", data.role.id);
if (role) {
var newRole = new _StructuresRole2["default"](data.role, server, client);
client.emit("serverRoleUpdated", new _StructuresRole2["default"](role, server, client), newRole);
server.roles.update(role, newRole);
client.emit("serverRoleUpdated", role, newRole);
} else {
client.emit("warn", "server role updated but role not in cache");
}

View File

@@ -40,7 +40,7 @@ var Message = (function (_Equality) {
this.tts = data.tts;
this.embeds = data.embeds;
this.timestamp = Date.parse(data.timestamp);
this.everyoneMentioned = data.mention_everyone;
this.everyoneMentioned = data.mention_everyone || data.everyoneMentioned;
this.id = data.id;
if (data.edited_timestamp) this.editedTimestamp = Date.parse(data.edited_timestamp);

View File

@@ -33,7 +33,7 @@ var PMChannel = (function (_Channel) {
_Channel.call(this, data, client);
this.type = data.type || "text";
this.lastMessageId = data.last_message_id;
this.lastMessageId = data.last_message_id || data.lastMessageId;
this.messages = new _UtilCache2["default"]("id", 1000);
this.recipient = this.client.internal.users.add(new _User2["default"](data.recipient, this.client));
}

View File

@@ -54,7 +54,7 @@ var Server = (function (_Equality) {
this.client = client;
this.region = data.region;
this.ownerID = data.owner_id;
this.ownerID = data.owner_id || data.ownerID;
this.name = data.name;
this.id = data.id;
this.members = new _UtilCache2["default"]();
@@ -62,7 +62,7 @@ var Server = (function (_Equality) {
this.roles = new _UtilCache2["default"]();
this.icon = data.icon;
this.afkTimeout = data.afkTimeout;
this.afkChannelID = data.afk_channel_id;
this.afkChannelID = data.afk_channel_id || data.afkChannelID;
this.memberMap = {};
var self = this;

View File

@@ -38,11 +38,13 @@ var ServerChannel = (function (_Channel) {
this.name = data.name;
this.type = data.type;
this.position = data.position;
this.permissionOverwrites = new _UtilCache2["default"]();
this.permissionOverwrites = data.permissionOverwrites || new _UtilCache2["default"]();
this.server = server;
data.permission_overwrites.forEach(function (permission) {
_this.permissionOverwrites.add(new _PermissionOverwrite2["default"](permission));
});
if (!data.permissionOverwrites) {
data.permission_overwrites.forEach(function (permission) {
_this.permissionOverwrites.add(new _PermissionOverwrite2["default"](permission));
});
}
}
ServerChannel.prototype.permissionsOf = function permissionsOf(user) {

View File

@@ -29,7 +29,7 @@ var TextChannel = (function (_ServerChannel) {
_ServerChannel.call(this, data, client, server);
this.topic = data.topic;
this.lastMessageID = data.last_message_id;
this.lastMessageID = data.last_message_id || data.lastMessageID;
this.messages = new _UtilCache2["default"]("id", client.options.maximumMessages);
}

View File

@@ -331,7 +331,7 @@ export default class InternalClient {
var tk = this.tokenCacher.getToken(email, password);
if( tk ){
this.client.emit("debug", "bypassed direct API login, used cached token");
return loginWithToken(tk, email, password);
return this.loginWithToken(tk, email, password);
}
}
@@ -462,7 +462,7 @@ export default class InternalClient {
// def sendFile
sendFile(where, _file, name) {
if (!name) {
if (_file instanceof String || typeof _file === "string") {
name = require("path").basename(attachment);
@@ -473,7 +473,7 @@ export default class InternalClient {
name = "image.png"; // Just have to go with default filenames.
}
}
return this.resolver.resolveChannel(where)
.then(channel =>
this.apiRequest("post", Endpoints.CHANNEL_MESSAGES(channel.id), true, null, {
@@ -1199,7 +1199,7 @@ export default class InternalClient {
data.mentions = data.mentions || msg.mentions;
data.author = data.author || msg.author;
var nmsg = new Message(data, channel, client);
client.emit("messageUpdated", nmsg, msg);
client.emit("messageUpdated", new Message(msg, channel, client), nmsg);
channel.messages.update(msg, nmsg);
}
} else {
@@ -1249,8 +1249,8 @@ export default class InternalClient {
// already the same don't do anything
client.emit("debug", "received server update but server already updated");
} else {
client.emit("serverUpdated", new Server(server, client), newserver);
self.servers.update(server, newserver);
client.emit("serverUpdated", server, newserver);
}
} else if (!server) {
client.emit("warn", "server was updated but it was not in the cache");
@@ -1304,25 +1304,23 @@ export default class InternalClient {
if (channel instanceof PMChannel) {
//PM CHANNEL
client.emit("channelUpdated", channel, self.private_channels.update(
channel,
new PMChannel(data, client)
));
client.emit("channelUpdated", new PMChannel(channel, client),
self.private_channels.update(channel, new PMChannel(data, client)));
} else {
if (channel.server) {
if (channel.type === "text") {
//TEXT CHANNEL
var chan = new TextChannel(data, client, channel.server);
chan.messages = channel.messages;
client.emit("channelUpdated", channel, chan);
channel.server.channels.update(channel, chan);
self.channels.update(channel, chan);
client.emit("channelUpdated", channel, chan);
} else {
//VOICE CHANNEL
var chan = new VoiceChannel(data, client, channel.server);
client.emit("channelUpdated", channel, chan);
channel.server.channels.update(channel, chan);
self.channels.update(channel, chan);
client.emit("channelUpdated", channel, chan);
}
} else {
client.emit("warn", "channel updated but server non-existant");
@@ -1361,8 +1359,8 @@ export default class InternalClient {
var role = server.roles.get("id", data.role.id);
if (role) {
var newRole = new Role(data.role, server, client);
client.emit("serverRoleUpdated", new Role(role, server, client), newRole);
server.roles.update(role, newRole);
client.emit("serverRoleUpdated", role, newRole);
} else {
client.emit("warn", "server role updated but role not in cache");
}

View File

@@ -15,7 +15,7 @@ export default class Message extends Equality{
this.tts = data.tts;
this.embeds = data.embeds;
this.timestamp = Date.parse(data.timestamp);
this.everyoneMentioned = data.mention_everyone;
this.everyoneMentioned = data.mention_everyone || data.everyoneMentioned;
this.id = data.id;
if(data.edited_timestamp)

View File

@@ -10,7 +10,7 @@ export default class PMChannel extends Channel {
super(data, client);
this.type = data.type || "text";
this.lastMessageId = data.last_message_id;
this.lastMessageId = data.last_message_id || data.lastMessageId;
this.messages = new Cache("id", 1000);
this.recipient = this.client.internal.users.add(new User(data.recipient, this.client));
}

View File

@@ -22,7 +22,7 @@ export default class Server extends Equality {
this.client = client;
this.region = data.region;
this.ownerID = data.owner_id;
this.ownerID = data.owner_id || data.ownerID;
this.name = data.name;
this.id = data.id;
this.members = new Cache();
@@ -30,7 +30,7 @@ export default class Server extends Equality {
this.roles = new Cache();
this.icon = data.icon;
this.afkTimeout = data.afkTimeout;
this.afkChannelID = data.afk_channel_id;
this.afkChannelID = data.afk_channel_id || data.afkChannelID;
this.memberMap = {};
var self = this;

View File

@@ -12,11 +12,13 @@ export default class ServerChannel extends Channel{
this.name = data.name;
this.type = data.type;
this.position = data.position;
this.permissionOverwrites = new Cache();
this.permissionOverwrites = data.permissionOverwrites || new Cache();
this.server = server;
data.permission_overwrites.forEach((permission) => {
this.permissionOverwrites.add( new PermissionOverwrite(permission) );
});
if (!data.permissionOverwrites) {
data.permission_overwrites.forEach((permission) => {
this.permissionOverwrites.add( new PermissionOverwrite(permission) );
});
}
}
permissionsOf(user){

View File

@@ -9,7 +9,7 @@ export default class TextChannel extends ServerChannel{
super(data, client, server);
this.topic = data.topic;
this.lastMessageID = data.last_message_id;
this.lastMessageID = data.last_message_id || data.lastMessageID;
this.messages = new Cache("id", client.options.maximumMessages);
}