Always fire messageUpdated, reset on login (#294,#295)

This commit is contained in:
abalabahaha
2016-05-31 10:24:19 -07:00
parent 00e3708e78
commit e6054c6ace
4 changed files with 42 additions and 34 deletions

View File

@@ -213,8 +213,10 @@ var InternalClient = (function () {
this.messageAwaits = {};
this.retryAfters = {};
this.tokenCacher = new _UtilTokenCacher2["default"](this.client);
this.tokenCacher.init(0);
if (!this.tokenCacher) {
this.tokenCacher = new _UtilTokenCacher2["default"](this.client);
this.tokenCacher.init(0);
}
};
InternalClient.prototype.cleanIntervals = function cleanIntervals() {
@@ -255,7 +257,6 @@ var InternalClient = (function () {
if (!_this2.email && !_this2.token) {
return;
}
_this2.setup();
// Check whether the email is set (if not, only a token has been used for login)
_this2.loginWithToken(_this2.token, _this2.email, _this2.password)["catch"](function () {
@@ -588,6 +589,8 @@ var InternalClient = (function () {
InternalClient.prototype.loginWithToken = function loginWithToken(token, email, password) {
var _this10 = this;
this.setup();
this.state = _ConnectionState2["default"].LOGGED_IN;
this.token = token;
this.email = email;
@@ -1819,8 +1822,11 @@ var InternalClient = (function () {
data.content = data.content || msg.content;
data.mentions = data.mentions || msg.mentions;
data.author = data.author || msg.author;
var nmsg = new _StructuresMessage2["default"](data, channel, client);
client.emit("messageUpdated", new _StructuresMessage2["default"](msg, channel, client), nmsg);
msg = new _StructuresMessage2["default"](msg, channel, client);
}
var nmsg = new _StructuresMessage2["default"](data, channel, client);
client.emit("messageUpdated", msg, nmsg);
if (msg) {
channel.messages.update(msg, nmsg);
}
} else {

View File

@@ -133,10 +133,8 @@ var Server = (function (_Equality) {
var presence = _ref;
var user = client.internal.users.get("id", presence.user.id);
if (user) {
user.status = presence.status;
user.game = presence.game;
}
user.status = presence.status;
user.game = presence.game;
}
}

View File

@@ -53,8 +53,8 @@ export default class InternalClient {
apiRequest(method, url, useAuth, data, file) {
var endpoint = url.replace(/\/[0-9]+/g, "/:id");
if(this.retryAfters[endpoint]) {
if(this.retryAfters[endpoint] < Date.now()) {
if (this.retryAfters[endpoint]) {
if (this.retryAfters[endpoint] < Date.now()) {
delete this.retryAfters[endpoint];
} else {
return new Promise((resolve, reject) => {
@@ -93,7 +93,7 @@ export default class InternalClient {
if (data.headers["retry-after"] || data.headers["Retry-After"]) {
var toWait = data.headers["retry-after"] || data.headers["Retry-After"];
if(!this.retryAfters[endpoint])
if (!this.retryAfters[endpoint])
this.retryAfters[endpoint] = Date.now() + parseInt(toWait);
setTimeout(() => {
this.apiRequest.apply(this, arguments).then(resolve).catch(reject);
@@ -150,8 +150,10 @@ export default class InternalClient {
this.messageAwaits = {};
this.retryAfters = {};
this.tokenCacher = new TokenCacher(this.client);
this.tokenCacher.init(0);
if (!this.tokenCacher) {
this.tokenCacher = new TokenCacher(this.client);
this.tokenCacher.init(0);
}
}
cleanIntervals() {
@@ -173,10 +175,9 @@ export default class InternalClient {
if (autoReconnect) {
this.autoReconnectInterval = Math.min(this.autoReconnectInterval * (Math.random() + 1), 60000);
setTimeout(() => {
if(!this.email && !this.token) {
if (!this.email && !this.token) {
return;
}
this.setup();
// Check whether the email is set (if not, only a token has been used for login)
this.loginWithToken(this.token, this.email, this.password).catch(() => this.disconnected(true));
@@ -305,7 +306,7 @@ export default class InternalClient {
chan.on("error", reject);
chan.on("close", reject);
if(timeout) {
if (timeout) {
clearTimeout(timeout);
}
this.websocket.removeListener("message", check);
@@ -344,7 +345,7 @@ export default class InternalClient {
getGuildMembers(serverID, chunkCount) {
this.forceFetchCount[serverID] = chunkCount;
if(this.forceFetchLength + 3 + serverID.length > 4082) { // 4096 - '{"op":8,"d":[]}'.length + 1 for lazy comma offset
if (this.forceFetchLength + 3 + serverID.length > 4082) { // 4096 - '{"op":8,"d":[]}'.length + 1 for lazy comma offset
this.requestGuildMembers(this.forceFetchQueue);
this.forceFetchQueue = [serverID];
this.forceFetchLength = 1 + serverID.length + 3;
@@ -365,8 +366,8 @@ export default class InternalClient {
}
checkReady() {
if(!this.readyTime) {
if(this.forceFetchQueue.length > 0) {
if (!this.readyTime) {
if (this.forceFetchQueue.length > 0) {
this.requestGuildMembers(this.forceFetchQueue);
this.forceFetchQueue = [];
this.forceFetchLength = 1;
@@ -383,11 +384,11 @@ export default class InternalClient {
}
restartServerCreateTimeout() {
if(this.guildCreateTimeout) {
if (this.guildCreateTimeout) {
clearTimeout(this.guildCreateTimeout);
this.guildCreateTimeout = null;
}
if(!this.readyTime) {
if (!this.readyTime) {
this.guildCreateTimeout = setTimeout(() => {
this.checkReady();
}, this.client.options.guildCreateTimeout);
@@ -489,6 +490,8 @@ export default class InternalClient {
// def loginWithToken
// email and password are optional
loginWithToken(token, email, password) {
this.setup();
this.state = ConnectionState.LOGGED_IN;
this.token = token;
this.email = email;
@@ -582,7 +585,7 @@ export default class InternalClient {
// def getGateway
getGateway() {
if(this.gatewayURL) {
if (this.gatewayURL) {
return Promise.resolve(this.gatewayURL);
}
return this.apiRequest("get", Endpoints.GATEWAY, true)
@@ -1500,7 +1503,7 @@ export default class InternalClient {
data.guilds.forEach(server => {
if (!server.unavailable) {
server = self.servers.add(new Server(server, client));
if(self.client.options.forceFetchUsers && server.members && server.members.length < server.memberCount) {
if (self.client.options.forceFetchUsers && server.members && server.members.length < server.memberCount) {
self.getGuildMembers(server.id, Math.ceil(server.memberCount / 1000));
}
} else {
@@ -1591,8 +1594,11 @@ export default class InternalClient {
data.content = data.content || msg.content;
data.mentions = data.mentions || msg.mentions;
data.author = data.author || msg.author;
var nmsg = new Message(data, channel, client);
client.emit("messageUpdated", new Message(msg, channel, client), nmsg);
msg = new Message(msg, channel, client);
}
var nmsg = new Message(data, channel, client);
client.emit("messageUpdated", msg, nmsg);
if (msg) {
channel.messages.update(msg, nmsg);
}
} else {
@@ -1604,14 +1610,14 @@ export default class InternalClient {
if (!server) {
if (!data.unavailable) {
server = self.servers.add(new Server(data, client));
if(client.readyTime) {
if (client.readyTime) {
client.emit("serverCreated", server);
}
if (self.client.options.forceFetchUsers && server.large && server.members.length < server.memberCount) {
self.getGuildMembers(server.id, Math.ceil(server.memberCount / 1000));
}
var unavailable = self.unavailableServers.get("id", server.id);
if(unavailable) {
if (unavailable) {
self.unavailableServers.remove(unavailable);
}
self.restartServerCreateTimeout();
@@ -2016,8 +2022,8 @@ export default class InternalClient {
server.members.add(self.users.add(new User(user.user, client)));
}
if(self.forceFetchCount.hasOwnProperty(server.id)) {
if(self.forceFetchCount[server.id] <= 1) {
if (self.forceFetchCount.hasOwnProperty(server.id)) {
if (self.forceFetchCount[server.id] <= 1) {
delete self.forceFetchCount[server.id];
self.checkReady();
} else {

View File

@@ -83,10 +83,8 @@ export default class Server extends Equality {
if (data.presences) {
for (var presence of data.presences) {
var user = client.internal.users.get("id", presence.user.id);
if (user) {
user.status = presence.status;
user.game = presence.game;
}
user.status = presence.status;
user.game = presence.game;
}
}