From 2d9dfa3c6ea4bb972da2f7e088d148b798c866d9 Mon Sep 17 00:00:00 2001 From: Almeida Date: Sun, 3 Jul 2022 14:35:19 +0100 Subject: [PATCH] fix(TextInputBuilder): parse `custom_id`, `label`, and `style` (#8216) --- .../__tests__/components/textInput.test.ts | 6 +++++ .../src/components/textInput/TextInput.ts | 25 +++++++++++++++---- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/packages/builders/__tests__/components/textInput.test.ts b/packages/builders/__tests__/components/textInput.test.ts index 838b5bde7..1e9b338f9 100644 --- a/packages/builders/__tests__/components/textInput.test.ts +++ b/packages/builders/__tests__/components/textInput.test.ts @@ -82,6 +82,12 @@ describe('Text Input Components', () => { .setStyle(TextInputStyle.Paragraph) .toJSON(); }).not.toThrowError(); + + expect(() => { + // Issue #8107 + // @ts-expect-error: shapeshift maps the enum key to the value when parsing + textInputComponent().setCustomId('Custom').setLabel('Guess').setStyle('Short').toJSON(); + }).not.toThrowError(); }); }); diff --git a/packages/builders/src/components/textInput/TextInput.ts b/packages/builders/src/components/textInput/TextInput.ts index a0ec9ef3d..eff72b851 100644 --- a/packages/builders/src/components/textInput/TextInput.ts +++ b/packages/builders/src/components/textInput/TextInput.ts @@ -1,4 +1,4 @@ -import type { APITextInputComponent } from 'discord-api-types/v10'; +import type { APITextInputComponent, TextInputStyle } from 'discord-api-types/v10'; import { maxLengthValidator, minLengthValidator, @@ -6,10 +6,25 @@ import { requiredValidator, valueValidator, validateRequiredParameters, + labelValidator, + textInputStyleValidator, } from './Assertions'; import { UnsafeTextInputBuilder } from './UnsafeTextInput'; +import { customIdValidator } from '../Assertions'; export class TextInputBuilder extends UnsafeTextInputBuilder { + public override setCustomId(customId: string): this { + return super.setCustomId(customIdValidator.parse(customId)); + } + + public override setLabel(label: string): this { + return super.setLabel(labelValidator.parse(label)); + } + + public override setStyle(style: TextInputStyle): this { + return super.setStyle(textInputStyleValidator.parse(style)); + } + public override setMinLength(minLength: number) { return super.setMinLength(minLengthValidator.parse(minLength)); } @@ -18,16 +33,16 @@ export class TextInputBuilder extends UnsafeTextInputBuilder { return super.setMaxLength(maxLengthValidator.parse(maxLength)); } - public override setRequired(required = true) { - return super.setRequired(requiredValidator.parse(required)); + public override setPlaceholder(placeholder: string) { + return super.setPlaceholder(placeholderValidator.parse(placeholder)); } public override setValue(value: string) { return super.setValue(valueValidator.parse(value)); } - public override setPlaceholder(placeholder: string) { - return super.setPlaceholder(placeholderValidator.parse(placeholder)); + public override setRequired(required = true) { + return super.setRequired(requiredValidator.parse(required)); } public override toJSON(): APITextInputComponent {