diff --git a/src/client/actions/Action.js b/src/client/actions/Action.js index a92fe45f..78c5f146 100644 --- a/src/client/actions/Action.js +++ b/src/client/actions/Action.js @@ -8,7 +8,7 @@ the REST API methods, in order to prevent rewriting code to handle data, used to be but they're strictly for manipulating data and making sure that WebSocket events don't clash with REST methods. - */ +*/ class GenericAction { diff --git a/src/client/actions/ActionsManager.js b/src/client/actions/ActionsManager.js index bb07c00f..13fbfeae 100644 --- a/src/client/actions/ActionsManager.js +++ b/src/client/actions/ActionsManager.js @@ -1,6 +1,5 @@ -const requireAction = name => require(`./${name}`); - class ActionsManager { + constructor(client) { this.client = client; @@ -24,7 +23,7 @@ class ActionsManager { } register(name) { - const Action = requireAction(name); + const Action = require(`./${name}`); this[name] = new Action(this.client); } } diff --git a/src/client/actions/ChannelCreate.js b/src/client/actions/ChannelCreate.js index bfbb6aab..2d5079b4 100644 --- a/src/client/actions/ChannelCreate.js +++ b/src/client/actions/ChannelCreate.js @@ -5,7 +5,6 @@ class ChannelCreateAction extends Action { handle(data) { const client = this.client; const channel = client.dataManager.newChannel(data); - return { channel, }; diff --git a/src/client/actions/ChannelDelete.js b/src/client/actions/ChannelDelete.js index d56296c2..5cea1a68 100644 --- a/src/client/actions/ChannelDelete.js +++ b/src/client/actions/ChannelDelete.js @@ -10,8 +10,8 @@ class ChannelDeleteAction extends Action { handle(data) { const client = this.client; - let channel = client.channels.get(data.id); + let channel = client.channels.get(data.id); if (channel) { client.dataManager.killChannel(channel); this.deleted[channel.id] = channel; diff --git a/src/client/actions/ChannelUpdate.js b/src/client/actions/ChannelUpdate.js index ecf74215..67688c06 100644 --- a/src/client/actions/ChannelUpdate.js +++ b/src/client/actions/ChannelUpdate.js @@ -6,15 +6,12 @@ class ChannelUpdateAction extends Action { handle(data) { const client = this.client; - const channel = client.channels.get(data.id); + const channel = client.channels.get(data.id); if (channel) { const oldChannel = cloneObject(channel); channel.setup(data); - if (!oldChannel.equals(data)) { - client.emit(Constants.Events.CHANNEL_UPDATE, oldChannel, channel); - } - + if (!oldChannel.equals(data)) client.emit(Constants.Events.CHANNEL_UPDATE, oldChannel, channel); return { old: oldChannel, updated: channel, diff --git a/src/client/actions/GuildBanRemove.js b/src/client/actions/GuildBanRemove.js index e0204ba9..ffed90a2 100644 --- a/src/client/actions/GuildBanRemove.js +++ b/src/client/actions/GuildBanRemove.js @@ -5,13 +5,9 @@ class GuildBanRemove extends Action { handle(data) { const client = this.client; - const guild = client.guilds.get(data.guild_id); const user = client.dataManager.newUser(data.user); - - if (guild && user) { - client.emit(Constants.Events.GUILD_BAN_REMOVE, guild, user); - } + if (guild && user) client.emit(Constants.Events.GUILD_BAN_REMOVE, guild, user); } } diff --git a/src/client/actions/GuildDelete.js b/src/client/actions/GuildDelete.js index 7f21c25e..6e33e14b 100644 --- a/src/client/actions/GuildDelete.js +++ b/src/client/actions/GuildDelete.js @@ -10,8 +10,8 @@ class GuildDeleteAction extends Action { handle(data) { const client = this.client; - let guild = client.guilds.get(data.id); + let guild = client.guilds.get(data.id); if (guild) { if (guild.available && data.unavailable) { // guild is unavailable @@ -24,6 +24,7 @@ class GuildDeleteAction extends Action { guild: null, }; } + // delete guild client.guilds.delete(guild.id); this.deleted[guild.id] = guild; @@ -43,10 +44,10 @@ class GuildDeleteAction extends Action { } /** -* Emitted whenever a guild becomes unavailable, likely due to a server outage. -* -* @event Client#guildUnavailable -* @param {Guild} guild the guild that has become unavailable. + * Emitted whenever a guild becomes unavailable, likely due to a server outage. + * + * @event Client#guildUnavailable + * @param {Guild} guild the guild that has become unavailable. */ module.exports = GuildDeleteAction; diff --git a/src/client/actions/GuildMemberRemove.js b/src/client/actions/GuildMemberRemove.js index b7a01d3a..87acb78a 100644 --- a/src/client/actions/GuildMemberRemove.js +++ b/src/client/actions/GuildMemberRemove.js @@ -10,6 +10,7 @@ class GuildMemberRemoveAction extends Action { handle(data) { const client = this.client; + const guild = client.guilds.get(data.guild_id); if (guild) { let member = guild.members.get(data.user.id); @@ -17,25 +18,21 @@ class GuildMemberRemoveAction extends Action { guild.memberCount--; guild._removeMember(member); this.deleted[guild.id + data.user.id] = member; - if (client.status === Constants.Status.READY) { - client.emit(Constants.Events.GUILD_MEMBER_REMOVE, guild, member); - } + if (client.status === Constants.Status.READY) client.emit(Constants.Events.GUILD_MEMBER_REMOVE, guild, member); this.scheduleForDeletion(guild.id, data.user.id); - } - - if (!member) { + } else { member = this.deleted[guild.id + data.user.id]; } return { - g: guild, - m: member, + guild, + member, }; } return { - g: guild, - m: null, + guild, + member: null, }; } @@ -44,14 +41,12 @@ class GuildMemberRemoveAction extends Action { } } - /** -* Emitted whenever a member leaves a guild, or is kicked. -* -* @event Client#guildMemberRemove -* @param {Guild} guild the guild that the member has left. -* @param {GuildMember} member the member that has left the guild. -*/ - + * Emitted whenever a member leaves a guild, or is kicked. + * + * @event Client#guildMemberRemove + * @param {Guild} guild the guild that the member has left. + * @param {GuildMember} member the member that has left the guild. + */ module.exports = GuildMemberRemoveAction; diff --git a/src/client/actions/GuildRoleCreate.js b/src/client/actions/GuildRoleCreate.js index a6500968..a6aa9d90 100644 --- a/src/client/actions/GuildRoleCreate.js +++ b/src/client/actions/GuildRoleCreate.js @@ -6,17 +6,13 @@ class GuildRoleCreate extends Action { handle(data) { const client = this.client; - const guild = client.guilds.get(data.guild_id); + const guild = client.guilds.get(data.guild_id); if (guild) { - const already = guild.roles.get(data.role.id); + const already = guild.roles.has(data.role.id); const role = new Role(guild, data.role); guild.roles.set(role.id, role); - - if (!already) { - client.emit(Constants.Events.GUILD_ROLE_CREATE, guild, role); - } - + if (!already) client.emit(Constants.Events.GUILD_ROLE_CREATE, guild, role); return { role, }; @@ -28,7 +24,6 @@ class GuildRoleCreate extends Action { } } - /** * Emitted whenever a guild role is created. * @@ -37,5 +32,4 @@ class GuildRoleCreate extends Action { * @param {Role} role the role that was created. */ - module.exports = GuildRoleCreate; diff --git a/src/client/actions/GuildRoleDelete.js b/src/client/actions/GuildRoleDelete.js index 55f3043e..5336a293 100644 --- a/src/client/actions/GuildRoleDelete.js +++ b/src/client/actions/GuildRoleDelete.js @@ -10,23 +10,21 @@ class GuildRoleDeleteAction extends Action { handle(data) { const client = this.client; + const guild = client.guilds.get(data.guild_id); - if (guild) { - let exists = guild.roles.get(data.role_id); - if (exists) { + let role = guild.roles.get(data.role_id); + if (role) { guild.roles.delete(data.role_id); - this.deleted[guild.id + data.role_id] = exists; + this.deleted[guild.id + data.role_id] = role; this.scheduleForDeletion(guild.id, data.role_id); - client.emit(Constants.Events.GUILD_ROLE_DELETE, guild, exists); - } - - if (!exists) { - exists = this.deleted[guild.id + data.role_id]; + client.emit(Constants.Events.GUILD_ROLE_DELETE, guild, role); + } else { + role = this.deleted[guild.id + data.role_id]; } return { - role: exists, + role, }; } diff --git a/src/client/actions/GuildRoleUpdate.js b/src/client/actions/GuildRoleUpdate.js index 30201ece..3ca6db0d 100644 --- a/src/client/actions/GuildRoleUpdate.js +++ b/src/client/actions/GuildRoleUpdate.js @@ -6,23 +6,22 @@ class GuildRoleUpdateAction extends Action { handle(data) { const client = this.client; + const guild = client.guilds.get(data.guild_id); - - const roleData = data.role; - if (guild) { - let oldRole; - const existingRole = guild.roles.get(roleData.id); - // exists and not the same - if (existingRole && !existingRole.equals(roleData)) { - oldRole = cloneObject(existingRole); - existingRole.setup(data.role); - client.emit(Constants.Events.GUILD_ROLE_UPDATE, guild, oldRole, existingRole); + const roleData = data.role; + let oldRole = null; + + const role = guild.roles.get(roleData.id); + if (role && !role.equals(roleData)) { + oldRole = cloneObject(role); + role.setup(data.role); + client.emit(Constants.Events.GUILD_ROLE_UPDATE, guild, oldRole, role); } return { old: oldRole, - updated: existingRole, + updated: role, }; } diff --git a/src/client/actions/GuildSync.js b/src/client/actions/GuildSync.js index 7d01000d..ae4bd5da 100644 --- a/src/client/actions/GuildSync.js +++ b/src/client/actions/GuildSync.js @@ -4,11 +4,10 @@ class GuildSync extends Action { handle(data) { const client = this.client; - const guild = client.guilds.get(data.id); + const guild = client.guilds.get(data.id); if (guild) { data.presences = data.presences || []; - data.members = data.members || []; for (const presence of data.presences) { const user = client.users.get(presence.user.id); if (user) { @@ -16,6 +15,8 @@ class GuildSync extends Action { user.game = presence.game; } } + + data.members = data.members || []; for (const syncMember of data.members) { const member = guild.members.get(syncMember.user.id); if (member) { diff --git a/src/client/actions/GuildUpdate.js b/src/client/actions/GuildUpdate.js index 0b7f05f7..b77b878c 100644 --- a/src/client/actions/GuildUpdate.js +++ b/src/client/actions/GuildUpdate.js @@ -12,16 +12,12 @@ class GuildUpdateAction extends Action { handle(data) { const client = this.client; - const guild = client.guilds.get(data.id); + const guild = client.guilds.get(data.id); if (guild) { const oldGuild = cloneObject(guild); guild.setup(data); - - if (!oldGuild.equals(data)) { - client.emit(Constants.Events.GUILD_UPDATE, oldGuild, guild); - } - + if (!oldGuild.equals(data)) client.emit(Constants.Events.GUILD_UPDATE, oldGuild, guild); return { old: oldGuild, updated: guild, diff --git a/src/client/actions/MessageCreate.js b/src/client/actions/MessageCreate.js index bba4bf83..c6dbe3b5 100644 --- a/src/client/actions/MessageCreate.js +++ b/src/client/actions/MessageCreate.js @@ -5,17 +5,17 @@ class MessageCreateAction extends Action { handle(data) { const client = this.client; - const channel = client.channels.get(data.channel_id); + const channel = client.channels.get(data.channel_id); if (channel) { const message = channel._cacheMessage(new Message(channel, data, client)); return { - m: message, + message, }; } return { - m: null, + message: null, }; } } diff --git a/src/client/actions/MessageDelete.js b/src/client/actions/MessageDelete.js index c9cbbfaf..f8ca5ee7 100644 --- a/src/client/actions/MessageDelete.js +++ b/src/client/actions/MessageDelete.js @@ -9,6 +9,7 @@ class MessageDeleteAction extends Action { handle(data) { const client = this.client; + const channel = client.channels.get(data.channel_id); if (channel) { let message = channel.messages.get(data.id); @@ -22,18 +23,18 @@ class MessageDeleteAction extends Action { } return { - m: message, + message, }; } return { - m: null, + message: null, }; } scheduleForDeletion(channelID, messageID) { - this.client.setTimeout( - () => delete this.deleted[channelID + messageID], this.client.options.rest_ws_bridge_timeout); + this.client.setTimeout(() => delete this.deleted[channelID + messageID], + this.client.options.rest_ws_bridge_timeout); } } diff --git a/src/client/actions/MessageDeleteBulk.js b/src/client/actions/MessageDeleteBulk.js index 951d3bf7..53d1cbf8 100644 --- a/src/client/actions/MessageDeleteBulk.js +++ b/src/client/actions/MessageDeleteBulk.js @@ -13,6 +13,7 @@ class MessageDeleteBulkAction extends Action { handle(data) { const client = this.client; const channel = client.channels.get(data.channel_id); + const ids = data.ids; const messages = new Collection(); for (const id of ids) { @@ -21,9 +22,8 @@ class MessageDeleteBulkAction extends Action { messages.set(message.id, message); } } - if (messages.size > 0) { - client.emit(Constants.Events.MESSAGE_BULK_DELETE, messages); - } + + if (messages.size > 0) client.emit(Constants.Events.MESSAGE_BULK_DELETE, messages); return { messages, }; diff --git a/src/client/actions/MessageUpdate.js b/src/client/actions/MessageUpdate.js index 644e90c5..9041c090 100644 --- a/src/client/actions/MessageUpdate.js +++ b/src/client/actions/MessageUpdate.js @@ -6,8 +6,8 @@ class MessageUpdateAction extends Action { handle(data) { const client = this.client; - const channel = client.channels.get(data.channel_id); + const channel = client.channels.get(data.channel_id); if (channel) { const message = channel.messages.get(data.id); if (message && !message.equals(data, true)) { diff --git a/src/client/actions/UserGet.js b/src/client/actions/UserGet.js index 435d046a..33c3ae84 100644 --- a/src/client/actions/UserGet.js +++ b/src/client/actions/UserGet.js @@ -5,7 +5,6 @@ class UserGetAction extends Action { handle(data) { const client = this.client; const user = client.dataManager.newUser(data); - return { user, }; diff --git a/src/client/actions/UserUpdate.js b/src/client/actions/UserUpdate.js index 924e2528..ae865f57 100644 --- a/src/client/actions/UserUpdate.js +++ b/src/client/actions/UserUpdate.js @@ -17,9 +17,7 @@ class UserUpdateAction extends Action { const oldUser = cloneObject(client.user); client.user.setup(data); - client.emit(Constants.Events.USER_UPDATE, oldUser, client.user); - return { old: oldUser, updated: client.user, diff --git a/src/client/rest/RESTMethods.js b/src/client/rest/RESTMethods.js index e63c1fb7..795643e8 100644 --- a/src/client/rest/RESTMethods.js +++ b/src/client/rest/RESTMethods.js @@ -54,7 +54,7 @@ class RESTMethods { $this.rest.makeRequest('post', Constants.Endpoints.channelMessages(channel.id), true, { content, tts, nonce, }, file) - .then(data => resolve($this.rest.client.actions.MessageCreate.handle(data).m)) + .then(data => resolve($this.rest.client.actions.MessageCreate.handle(data).message)) .catch(reject); } @@ -77,7 +77,7 @@ class RESTMethods { resolve(this.rest.client.actions.MessageDelete.handle({ id: message.id, channel_id: message.channel.id, - }).m); + }).message); }) .catch(reject); }); @@ -286,7 +286,7 @@ class RESTMethods { resolve(this.rest.client.actions.GuildMemberRemove.handle({ guild_id: guild.id, user: member.user, - }).m); + }).member); }) .catch(reject); }); diff --git a/src/client/websocket/packets/handlers/MessageCreate.js b/src/client/websocket/packets/handlers/MessageCreate.js index 992d3736..25de2816 100644 --- a/src/client/websocket/packets/handlers/MessageCreate.js +++ b/src/client/websocket/packets/handlers/MessageCreate.js @@ -9,8 +9,8 @@ class MessageCreateHandler extends AbstractHandler { const response = client.actions.MessageCreate.handle(data); - if (response.m) { - client.emit(Constants.Events.MESSAGE_CREATE, response.m); + if (response.message) { + client.emit(Constants.Events.MESSAGE_CREATE, response.message); } } diff --git a/src/client/websocket/packets/handlers/MessageDelete.js b/src/client/websocket/packets/handlers/MessageDelete.js index d387c8e6..7acc8011 100644 --- a/src/client/websocket/packets/handlers/MessageDelete.js +++ b/src/client/websocket/packets/handlers/MessageDelete.js @@ -9,8 +9,8 @@ class MessageDeleteHandler extends AbstractHandler { const response = client.actions.MessageDelete.handle(data); - if (response.m) { - client.emit(Constants.Events.MESSAGE_DELETE, response.m); + if (response.message) { + client.emit(Constants.Events.MESSAGE_DELETE, response.message); } }