seyfert/packages/biscuit/structures/components/ActionRowComponent.ts
Marcos Susaña 08b8df41fa
fix(types): Literal Types (#77)
* fix(Message): delete() params

* feat: fetches guilds items

* fix(types): literal types

* fix
2022-07-21 07:49:52 +00:00

40 lines
1.7 KiB
TypeScript

import type { Session } from '../../Session.ts';
import type { DiscordComponent, DiscordInputTextComponent } from '../../../discordeno/mod.ts';
import type { ActionRowComponent, ComponentsWithoutRow } from './Component.ts';
import { ButtonStyles, MessageComponentTypes } from '../../../discordeno/mod.ts';
import BaseComponent from './Component.ts';
import Button from './ButtonComponent.ts';
import LinkButton from './LinkButtonComponent.ts';
import SelectMenu from './SelectMenuComponent.ts';
import InputText from './TextInputComponent.ts';
export class ActionRow extends BaseComponent implements ActionRowComponent {
constructor(session: Session, data: DiscordComponent) {
super(data.type);
this.session = session;
this.type = data.type as MessageComponentTypes.ActionRow;
this.components = data.components!.map((component) => {
switch (component.type) {
case MessageComponentTypes.Button:
if (component.style === ButtonStyles.Link) {
return new LinkButton(session, component);
}
return new Button(session, component);
case MessageComponentTypes.SelectMenu:
return new SelectMenu(session, component);
case MessageComponentTypes.InputText:
return new InputText(session, component as DiscordInputTextComponent);
case MessageComponentTypes.ActionRow:
throw new Error('Cannot have an action row inside an action row');
}
});
}
readonly session: Session;
override type: MessageComponentTypes.ActionRow;
components: ComponentsWithoutRow[];
}
export default ActionRow;