mirror of
https://github.com/danbulant/discord.js
synced 2026-05-24 12:35:53 +00:00
ClientUserGuildSettings: avoid uncaught exception and a bit of refactoring (#1885)
* refactor(ClientUserGuildSettings): make client first parameter of the constructor * refactor(ClientUserChannelOverride): patch if possible rather then reinstantiating every update * fix(ClientUserGuildSettings): avoid uncaught exception when patching newly joined guilds/gdms
This commit is contained in:
parent
bb4fe256e0
commit
87fa74acd4
3 changed files with 9 additions and 5 deletions
|
|
@ -1,10 +1,13 @@
|
|||
const AbstractHandler = require('./AbstractHandler');
|
||||
const Constants = require('../../../../util/Constants');
|
||||
const ClientUserGuildSettings = require('../../../../structures/ClientUserGuildSettings');
|
||||
|
||||
class UserGuildSettingsUpdateHandler extends AbstractHandler {
|
||||
handle(packet) {
|
||||
const client = this.packetManager.client;
|
||||
client.user.guildSettings.get(packet.d.guild_id).patch(packet.d);
|
||||
const settings = client.user.guildSettings.get(packet.d.guild_id);
|
||||
if (settings) settings.patch(packet.d);
|
||||
else client.user.guildSettings.set(packet.d.guild_id, new ClientUserGuildSettings(this.client, packet.d));
|
||||
client.emit(Constants.Events.USER_GUILD_SETTINGS_UPDATE, client.user.guildSettings.get(packet.d.guild_id));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ class ClientUser extends User {
|
|||
this.guildSettings = new Collection();
|
||||
if (data.user_guild_settings) {
|
||||
for (const settings of data.user_guild_settings) {
|
||||
this.guildSettings.set(settings.guild_id, new ClientUserGuildSettings(settings, this.client));
|
||||
this.guildSettings.set(settings.guild_id, new ClientUserGuildSettings(this.client, settings));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ const ClientUserChannelOverride = require('./ClientUserChannelOverride');
|
|||
* A wrapper around the ClientUser's guild settings.
|
||||
*/
|
||||
class ClientUserGuildSettings {
|
||||
constructor(data, client) {
|
||||
constructor(client, data) {
|
||||
/**
|
||||
* The client that created the instance of the ClientUserGuildSettings
|
||||
* @name ClientUserGuildSettings#client
|
||||
|
|
@ -33,8 +33,9 @@ class ClientUserGuildSettings {
|
|||
if (!data.hasOwnProperty(key)) continue;
|
||||
if (key === 'channel_overrides') {
|
||||
for (const channel of data[key]) {
|
||||
this.channelOverrides.set(channel.channel_id,
|
||||
new ClientUserChannelOverride(channel));
|
||||
const override = this.channelOverrides.get(channel.channel_id);
|
||||
if (override) override.patch(channel);
|
||||
else this.channelOverrides.set(channel.channel_id, new ClientUserChannelOverride(channel));
|
||||
}
|
||||
} else if (typeof value === 'function') {
|
||||
this[value.name] = value(data[key]);
|
||||
|
|
|
|||
Loading…
Reference in a new issue