From 6ec090775245cd3611b9af3f62544cfc718ceb19 Mon Sep 17 00:00:00 2001 From: almeidx Date: Sat, 2 Oct 2021 15:00:29 +0100 Subject: [PATCH] perf: use logical assignments instead of if statements --- src/client/websocket/handlers/READY.js | 2 +- src/managers/GuildBanManager.js | 4 +--- src/managers/GuildChannelManager.js | 6 ++---- src/managers/GuildManager.js | 14 +++++++------- src/managers/GuildMemberManager.js | 2 +- src/managers/RoleManager.js | 2 +- src/managers/StageInstanceManager.js | 4 ++-- src/structures/GuildChannel.js | 2 +- src/structures/Webhook.js | 2 +- 9 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/client/websocket/handlers/READY.js b/src/client/websocket/handlers/READY.js index 408bfa7321b1..82da01cf7952 100644 --- a/src/client/websocket/handlers/READY.js +++ b/src/client/websocket/handlers/READY.js @@ -7,7 +7,7 @@ module.exports = (client, { d: data }, shard) => { if (client.user) { client.user._patch(data.user); } else { - if (!ClientUser) ClientUser = require('../../../structures/ClientUser'); + ClientUser ??= require('../../../structures/ClientUser'); client.user = new ClientUser(client, data.user); client.users.cache.set(client.user.id, client.user); } diff --git a/src/managers/GuildBanManager.js b/src/managers/GuildBanManager.js index f2b67ea4de65..1a8120387dbc 100644 --- a/src/managers/GuildBanManager.js +++ b/src/managers/GuildBanManager.js @@ -93,9 +93,7 @@ class GuildBanManager extends CachedManager { if (!options) return this._fetchMany(); const user = this.client.users.resolveId(options); if (user) return this._fetchSingle({ user, cache: true }); - if (options.user) { - options.user = this.client.users.resolveId(options.user); - } + options.user &&= this.client.users.resolveId(options.user); if (!options.user) { if ('cache' in options) return this._fetchMany(options.cache); return Promise.reject(new Error('FETCH_BAN_RESOLVE_ID')); diff --git a/src/managers/GuildChannelManager.js b/src/managers/GuildChannelManager.js index fc7a7e47b116..d2871e599acf 100644 --- a/src/managers/GuildChannelManager.js +++ b/src/managers/GuildChannelManager.js @@ -133,10 +133,8 @@ class GuildChannelManager extends CachedManager { name, { type, topic, nsfw, bitrate, userLimit, parent, permissionOverwrites, position, rateLimitPerUser, reason } = {}, ) { - if (parent) parent = this.client.channels.resolveId(parent); - if (permissionOverwrites) { - permissionOverwrites = permissionOverwrites.map(o => PermissionOverwrites.resolve(o, this.guild)); - } + parent &&= this.client.channels.resolveId(parent); + permissionOverwrites &&= permissionOverwrites.map(o => PermissionOverwrites.resolve(o, this.guild)); const data = await this.client.api.guilds(this.guild.id).channels.post({ data: { diff --git a/src/managers/GuildManager.js b/src/managers/GuildManager.js index fa536e3c51a9..6ed1c586e856 100644 --- a/src/managers/GuildManager.js +++ b/src/managers/GuildManager.js @@ -188,8 +188,8 @@ class GuildManager extends CachedManager { explicitContentFilter = ExplicitContentFilterLevels[explicitContentFilter]; } for (const channel of channels) { - if (channel.type) channel.type = ChannelTypes[channel.type.toUpperCase()]; - if (channel.type) channel.type = typeof channel.type === 'number' ? channel.type : ChannelTypes[channel.type]; + channel.type &&= ChannelTypes[channel.type.toUpperCase()]; + channel.type &&= typeof channel.type === 'number' ? channel.type : ChannelTypes[channel.type]; channel.parent_id = channel.parentId; delete channel.parentId; channel.user_limit = channel.userLimit; @@ -201,17 +201,17 @@ class GuildManager extends CachedManager { if (typeof overwrite.type === 'string') { overwrite.type = OverwriteTypes[overwrite.type]; } - if (overwrite.allow) overwrite.allow = Permissions.resolve(overwrite.allow).toString(); - if (overwrite.deny) overwrite.deny = Permissions.resolve(overwrite.deny).toString(); + overwrite.allow &&= Permissions.resolve(overwrite.allow).toString(); + overwrite.deny &&= Permissions.resolve(overwrite.deny).toString(); } channel.permission_overwrites = channel.permissionOverwrites; delete channel.permissionOverwrites; } for (const role of roles) { - if (role.color) role.color = resolveColor(role.color); - if (role.permissions) role.permissions = Permissions.resolve(role.permissions).toString(); + role.color &&= resolveColor(role.color); + role.permissions &&= Permissions.resolve(role.permissions).toString(); } - if (systemChannelFlags) systemChannelFlags = SystemChannelFlags.resolve(systemChannelFlags); + systemChannelFlags &&= SystemChannelFlags.resolve(systemChannelFlags); const data = await this.client.api.guilds.post({ data: { diff --git a/src/managers/GuildMemberManager.js b/src/managers/GuildMemberManager.js index 59cf10c8279d..c6f855c79034 100644 --- a/src/managers/GuildMemberManager.js +++ b/src/managers/GuildMemberManager.js @@ -248,7 +248,7 @@ class GuildMemberManager extends CachedManager { _data.channel_id = null; _data.channel = undefined; } - if (_data.roles) _data.roles = _data.roles.map(role => (role instanceof Role ? role.id : role)); + _data.roles &&= _data.roles.map(role => (role instanceof Role ? role.id : role)); let endpoint = this.client.api.guilds(this.guild.id); if (id === this.client.user.id) { const keys = Object.keys(_data); diff --git a/src/managers/RoleManager.js b/src/managers/RoleManager.js index 17dac0357aac..b0c5b971c188 100644 --- a/src/managers/RoleManager.js +++ b/src/managers/RoleManager.js @@ -129,7 +129,7 @@ class RoleManager extends CachedManager { */ async create(options = {}) { let { name, color, hoist, permissions, position, mentionable, reason } = options; - if (color) color = resolveColor(color); + color &&= resolveColor(color); if (typeof permissions !== 'undefined') permissions = new Permissions(permissions); const data = await this.client.api.guilds(this.guild.id).roles.post({ diff --git a/src/managers/StageInstanceManager.js b/src/managers/StageInstanceManager.js index 7ad758d3b8ac..b56e145b1ccb 100644 --- a/src/managers/StageInstanceManager.js +++ b/src/managers/StageInstanceManager.js @@ -60,7 +60,7 @@ class StageInstanceManager extends CachedManager { if (typeof options !== 'object') throw new TypeError('INVALID_TYPE', 'options', 'object', true); let { topic, privacyLevel } = options; - if (privacyLevel) privacyLevel = typeof privacyLevel === 'number' ? privacyLevel : PrivacyLevels[privacyLevel]; + privacyLevel &&= typeof privacyLevel === 'number' ? privacyLevel : PrivacyLevels[privacyLevel]; const data = await this.client.api['stage-instances'].post({ data: { @@ -122,7 +122,7 @@ class StageInstanceManager extends CachedManager { let { topic, privacyLevel } = options; - if (privacyLevel) privacyLevel = typeof privacyLevel === 'number' ? privacyLevel : PrivacyLevels[privacyLevel]; + privacyLevel &&= typeof privacyLevel === 'number' ? privacyLevel : PrivacyLevels[privacyLevel]; const data = await this.client.api('stage-instances', channelId).patch({ data: { diff --git a/src/structures/GuildChannel.js b/src/structures/GuildChannel.js index f8bbe3e54394..b008b6bda90a 100644 --- a/src/structures/GuildChannel.js +++ b/src/structures/GuildChannel.js @@ -294,7 +294,7 @@ class GuildChannel extends Channel { * .catch(console.error); */ async edit(data, reason) { - if (data.parent) data.parent = this.client.channels.resolveId(data.parent); + data.parent &&= this.client.channels.resolveId(data.parent); if (typeof data.position !== 'undefined') { const updatedChannels = await Util.setPosition( diff --git a/src/structures/Webhook.js b/src/structures/Webhook.js index 31db5249a3f5..9dc5c58f50da 100644 --- a/src/structures/Webhook.js +++ b/src/structures/Webhook.js @@ -225,7 +225,7 @@ class Webhook { if (avatar && !(typeof avatar === 'string' && avatar.startsWith('data:'))) { avatar = await DataResolver.resolveImage(avatar); } - if (channel) channel = channel?.id ?? channel; + channel &&= channel.id ?? channel; const data = await this.client.api.webhooks(this.id, channel ? undefined : this.token).patch({ data: { name, avatar, channel_id: channel }, reason,