fix(TextInputBuilder): parse custom_id, label, and style (#8216)

This commit is contained in:
Almeida
2022-07-03 14:35:19 +01:00
committed by GitHub
parent ab238a9046
commit 2d9dfa3c6e
2 changed files with 26 additions and 5 deletions

View File

@@ -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();
});
});

View File

@@ -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 {