From 59a5862f2d2622059922dab216d7768dc54436a9 Mon Sep 17 00:00:00 2001 From: Schuyler Cebulskie Date: Sat, 3 Sep 2016 17:48:51 -0400 Subject: [PATCH] Clean up Actions code (#591) --- src/client/actions/Action.js | 2 +- src/client/actions/ActionsManager.js | 5 ++- src/client/actions/ChannelCreate.js | 1 - src/client/actions/ChannelDelete.js | 2 +- src/client/actions/ChannelUpdate.js | 7 ++--- src/client/actions/GuildBanRemove.js | 6 +--- src/client/actions/GuildDelete.js | 11 ++++--- src/client/actions/GuildMemberRemove.js | 31 ++++++++----------- src/client/actions/GuildRoleCreate.js | 12 ++----- src/client/actions/GuildRoleDelete.js | 18 +++++------ src/client/actions/GuildRoleUpdate.js | 21 ++++++------- src/client/actions/GuildSync.js | 5 +-- src/client/actions/GuildUpdate.js | 8 ++--- src/client/actions/MessageCreate.js | 6 ++-- src/client/actions/MessageDelete.js | 9 +++--- src/client/actions/MessageDeleteBulk.js | 6 ++-- src/client/actions/MessageUpdate.js | 2 +- src/client/actions/UserGet.js | 1 - src/client/actions/UserUpdate.js | 2 -- src/client/rest/RESTMethods.js | 6 ++-- .../packets/handlers/MessageCreate.js | 4 +-- .../packets/handlers/MessageDelete.js | 4 +-- 22 files changed, 71 insertions(+), 98 deletions(-) diff --git a/src/client/actions/Action.js b/src/client/actions/Action.js index a92fe45fc..78c5f146a 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 bb07c00f8..13fbfeae4 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 bfbb6aab1..2d5079b43 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 d56296c2e..5cea1a680 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 ecf74215a..67688c06e 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 e0204ba90..ffed90a28 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 7f21c25e0..6e33e14b9 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 b7a01d3a4..87acb78a7 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 a65009682..a6aa9d909 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 55f3043e4..5336a2934 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 30201ecef..3ca6db0db 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 7d01000db..ae4bd5daa 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 0b7f05f72..b77b878c7 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 bba4bf83d..c6dbe3b50 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 c9cbbfafc..f8ca5ee70 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 951d3bf73..53d1cbf81 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 644e90c57..9041c090b 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 435d046a5..33c3ae84c 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 924e25287..ae865f579 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 e63c1fb75..795643e88 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 992d37368..25de28166 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 d387c8e6c..7acc80114 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); } }