Handle unavailable guild, fix default getChannelLogs limit

This commit is contained in:
abalabahaha
2016-01-18 17:46:15 -08:00
parent 94f067cc51
commit 68435f0619
6 changed files with 65 additions and 70 deletions

View File

@@ -86,7 +86,7 @@ var Client = (function (_EventEmitter) {
var callback = arguments.length <= 0 || arguments[0] === undefined ? function () /*err, {}*/{} : arguments[0];
this.internal.logout().then(function () {
return this.internal.logout().then(function () {
return _this.internal.disconnected(true);
}).then(dataCallback(callback), errorCallback(callback));
};
@@ -179,7 +179,7 @@ var Client = (function (_EventEmitter) {
// def getChannelLogs
Client.prototype.getChannelLogs = function getChannelLogs(where) {
var limit = arguments.length <= 1 || arguments[1] === undefined ? 500 : arguments[1];
var limit = arguments.length <= 1 || arguments[1] === undefined ? 50 : arguments[1];
var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
var callback = arguments.length <= 3 || arguments[3] === undefined ? function () /*err, logs*/{} : arguments[3];
@@ -187,6 +187,10 @@ var Client = (function (_EventEmitter) {
// options is the callback
callback = options;
options = {};
} else if (typeof limit === "function") {
// options is the callback
callback = limit;
limit = 50;
}
return this.internal.getChannelLogs(where, limit, options).then(dataCallback(callback), errorCallback(callback));

View File

@@ -588,7 +588,7 @@ var InternalClient = (function () {
InternalClient.prototype.getChannelLogs = function getChannelLogs(_channel) {
var _this15 = this;
var limit = arguments.length <= 1 || arguments[1] === undefined ? 500 : arguments[1];
var limit = arguments.length <= 1 || arguments[1] === undefined ? 50 : arguments[1];
var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
return this.resolver.resolveChannel(_channel).then(function (channel) {
@@ -1373,7 +1373,7 @@ var InternalClient = (function () {
break;
case _Constants.PacketType.SERVER_CREATE:
var server = self.servers.get("id", data.id);
if (!server) {
if (!server && !data.unavailable) {
server = new _StructuresServer2["default"](data, client);
self.servers.add(server);
client.emit("serverCreated", server);
@@ -1381,8 +1381,7 @@ var InternalClient = (function () {
break;
case _Constants.PacketType.SERVER_DELETE:
var server = self.servers.get("id", data.id);
if (server) {
if (server && !data.unavailable) {
for (var _iterator5 = server.channels, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
var _ref5;

View File

@@ -67,38 +67,32 @@ var Server = (function (_Equality) {
var self = this;
if (data.roles) {
data.roles.forEach(function (dataRole) {
_this.roles.add(new _Role2["default"](dataRole, _this, client));
});
}
data.roles.forEach(function (dataRole) {
_this.roles.add(new _Role2["default"](dataRole, _this, client));
});
if (data.members) {
data.members.forEach(function (dataUser) {
_this.memberMap[dataUser.user.id] = {
roles: dataUser.roles.map(function (pid) {
return self.roles.get("id", pid);
}),
mute: dataUser.mute,
deaf: dataUser.deaf,
joinedAt: Date.parse(dataUser.joined_at)
};
var user = client.internal.users.add(new _User2["default"](dataUser.user, client));
_this.members.add(user);
});
}
data.members.forEach(function (dataUser) {
_this.memberMap[dataUser.user.id] = {
roles: dataUser.roles.map(function (pid) {
return self.roles.get("id", pid);
}),
mute: dataUser.mute,
deaf: dataUser.deaf,
joinedAt: Date.parse(dataUser.joined_at)
};
var user = client.internal.users.add(new _User2["default"](dataUser.user, client));
_this.members.add(user);
});
if (data.channels) {
data.channels.forEach(function (dataChannel) {
if (dataChannel.type === "text") {
var channel = client.internal.channels.add(new _TextChannel2["default"](dataChannel, client, _this));
_this.channels.add(channel);
} else {
var channel = client.internal.channels.add(new _VoiceChannel2["default"](dataChannel, client, _this));
_this.channels.add(channel);
}
});
}
data.channels.forEach(function (dataChannel) {
if (dataChannel.type === "text") {
var channel = client.internal.channels.add(new _TextChannel2["default"](dataChannel, client, _this));
_this.channels.add(channel);
} else {
var channel = client.internal.channels.add(new _VoiceChannel2["default"](dataChannel, client, _this));
_this.channels.add(channel);
}
});
if (data.presences) {
for (var _iterator = data.presences, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {

View File

@@ -167,12 +167,17 @@ export default class Client extends EventEmitter {
}
// def getChannelLogs
getChannelLogs(where, limit = 500, options = {}, callback = (/*err, logs*/) => { }) {
getChannelLogs(where, limit = 50, options = {}, callback = (/*err, logs*/) => { }) {
if (typeof options === "function") {
// options is the callback
callback = options;
options = {};
}
else if (typeof limit === "function") {
// options is the callback
callback = limit;
limit = 50;
}
return this.internal.getChannelLogs(where, limit, options)
.then(dataCallback(callback), errorCallback(callback));

View File

@@ -86,7 +86,7 @@ export default class InternalClient {
return reject(error);
}
}else{
resolve(data.body);
resolve(data.body);
}
});
});
@@ -472,7 +472,7 @@ export default class InternalClient {
}
// def getChannelLogs
getChannelLogs(_channel, limit = 500, options = {}) {
getChannelLogs(_channel, limit = 50, options = {}) {
return this.resolver.resolveChannel(_channel)
.then(channel => {
var qsObject = {limit};
@@ -1187,7 +1187,7 @@ export default class InternalClient {
break;
case PacketType.SERVER_CREATE:
var server = self.servers.get("id", data.id);
if (!server) {
if (!server && !data.unavailable) {
server = new Server(data, client)
self.servers.add(server);
client.emit("serverCreated", server);
@@ -1195,8 +1195,7 @@ export default class InternalClient {
break;
case PacketType.SERVER_DELETE:
var server = self.servers.get("id", data.id);
if (server) {
if (server && !data.unavailable) {
for (var channel of server.channels) {
self.channels.remove(channel);
}

View File

@@ -35,36 +35,30 @@ export default class Server extends Equality {
var self = this;
if (data.roles) {
data.roles.forEach((dataRole) => {
this.roles.add(new Role(dataRole, this, client));
});
}
data.roles.forEach((dataRole) => {
this.roles.add(new Role(dataRole, this, client));
});
if (data.members) {
data.members.forEach((dataUser) => {
this.memberMap[dataUser.user.id] = {
roles: dataUser.roles.map((pid) => self.roles.get("id", pid)),
mute: dataUser.mute,
deaf: dataUser.deaf,
joinedAt: Date.parse(dataUser.joined_at)
};
var user = client.internal.users.add(new User(dataUser.user, client));
this.members.add(user);
});
}
data.members.forEach((dataUser) => {
this.memberMap[dataUser.user.id] = {
roles: dataUser.roles.map((pid) => self.roles.get("id", pid)),
mute: dataUser.mute,
deaf: dataUser.deaf,
joinedAt: Date.parse(dataUser.joined_at)
};
var user = client.internal.users.add(new User(dataUser.user, client));
this.members.add(user);
});
if (data.channels) {
data.channels.forEach((dataChannel) => {
if (dataChannel.type === "text") {
var channel = client.internal.channels.add(new TextChannel(dataChannel, client, this));
this.channels.add(channel);
} else {
var channel = client.internal.channels.add(new VoiceChannel(dataChannel, client, this));
this.channels.add(channel);
}
});
}
data.channels.forEach((dataChannel) => {
if (dataChannel.type === "text") {
var channel = client.internal.channels.add(new TextChannel(dataChannel, client, this));
this.channels.add(channel);
} else {
var channel = client.internal.channels.add(new VoiceChannel(dataChannel, client, this));
this.channels.add(channel);
}
});
if (data.presences) {
for (var presence of data.presences) {