Skip to content

Commit

Permalink
chore: move transformers to utils/transformers
Browse files Browse the repository at this point in the history
  • Loading branch information
almeidx committed Feb 9, 2023
1 parent 2b321ab commit f1f1dd5
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 43 deletions.
42 changes: 3 additions & 39 deletions packages/discord.js/src/structures/GuildOnboarding.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
'use strict';

const { _transformGuildOnboardingPrompt } = require('../util/Transformers');

/**
* Represents the onboarding data of a guild.
*/
Expand All @@ -15,7 +17,7 @@ class GuildOnboarding {
* The prompts shown during onboarding
* @type {GuildOnboardingPrompt[]}
*/
this.prompts = data.prompts.map(prompt => this._transformPrompt(prompt));
this.prompts = data.prompts.map(prompt => _transformGuildOnboardingPrompt(prompt));

/**
* The ids of the channels that new members get opted into automatically
Expand All @@ -42,24 +44,6 @@ class GuildOnboarding {
* @property {GuildOnboardingPromptType} type The type of the prompt
*/

/**
* Transforms a raw prompt object into a GuildOnboardingPrompt
* @param {Object} prompt The raw prompt object
* @returns {GuildOnboardingPrompt}
* @private
*/
_transformPrompt(prompt) {
return {
id: prompt.id,
options: prompt.options.map(option => this._transformPromptOption(option)),
title: prompt.title,
singleSelect: prompt.single_select,
required: prompt.required,
inOnboarding: prompt.in_onboarding,
type: prompt.type,
};
}

/**
* The data for an option of a guilds onboarding prompt
* @typedef {Object} GuildOnboardingPromptOption
Expand All @@ -77,26 +61,6 @@ class GuildOnboarding {
* @property {?Snowflake} id The id of the emoji
* @property {?string} name The name of the emoji
*/

/**
* Transforms a raw prompt option object into a GuildOnboardingPromptOption
* @param {Object} option The raw prompt option object
* @returns {GuildOnboardingPromptOption}
* @private
*/
_transformPromptOption(option) {
return {
id: option.id,
channelIds: option.channel_ids,
roleIds: option.role_ids,
emoji: {
id: option.emoji_id,
name: option.emoji_name,
},
title: option.title,
description: option.description,
};
}
}

exports.GuildOnboarding = GuildOnboarding;
5 changes: 5 additions & 0 deletions packages/discord.js/src/util/APITypes.js
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,11 @@
* @see {@link https://discord-api-types.dev/api/discord-api-types-v10/enum/GuildNSFWLevel}
*/

/**
* @external GuildOnboardingPromptType
* @see {@link https://discord-api-types.dev/api/discord-api-types-v10/enum/GuildOnboardingPromptType}
*/

/**
* @external GuildPremiumTier
* @see {@link https://discord-api-types.dev/api/discord-api-types-v10/enum/GuildPremiumTier}
Expand Down
30 changes: 29 additions & 1 deletion packages/discord.js/src/util/Transformers.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,32 @@ function toSnakeCase(obj) {
return Object.fromEntries(Object.entries(obj).map(([key, value]) => [snakeCase(key), toSnakeCase(value)]));
}

module.exports = { toSnakeCase };
/**
* Transforms a raw prompt object into a GuildOnboardingPrompt
* @param {Object} prompt The raw prompt object
* @returns {GuildOnboardingPrompt}
* @ignore
*/
function _transformGuildOnboardingPrompt(prompt) {
return {
id: prompt.id,
options: prompt.options.map(option => ({
id: option.id,
channelIds: option.channel_ids,
roleIds: option.role_ids,
emoji: {
id: option.emoji_id,
name: option.emoji_name,
},
title: option.title,
description: option.description,
})),
title: prompt.title,
singleSelect: prompt.single_select,
required: prompt.required,
inOnboarding: prompt.in_onboarding,
type: prompt.type,
};
}

module.exports = { toSnakeCase, _transformGuildOnboardingPrompt };
3 changes: 0 additions & 3 deletions packages/discord.js/typings/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1523,9 +1523,6 @@ export class GuildMember extends PartialTextBasedChannel(Base) {

export class GuildOnboarding {
private constructor(data: any);
private _transformPrompt(prompt: any): GuildOnboardingPrompt;
private _transformPromptOption(option: any): GuildOnboardingPromptOption;

public guildId: Snowflake;
public prompts: GuildOnboardingPrompt[];
public defaultChannelIds: Snowflake[];
Expand Down

0 comments on commit f1f1dd5

Please sign in to comment.