Skip to content

Commit 705364a

Browse files
authored
Merge pull request #320 from Secreto31126/template-component-type
Added TemplateComponent interface
2 parents f6a4dc9 + 436fc7a commit 705364a

File tree

2 files changed

+12
-25
lines changed

2 files changed

+12
-25
lines changed

src/messages/template.ts

+10-25
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ import {
22
ClientMessage,
33
ClientLimitedMessageComponent,
44
type ClientBuildableMessageComponent,
5-
type ClientTypedMessageComponent
5+
type ClientTypedMessageComponent,
6+
type TemplateComponent
67
} from "../types.js";
78
import type { AtLeastOne, XOR } from "../utils";
89

@@ -73,15 +74,7 @@ export class Template extends ClientMessage {
7374
/**
7475
* The components of the template
7576
*/
76-
readonly components?: Array<
77-
NonNullable<
78-
| HeaderComponent
79-
| BodyComponent
80-
| ButtonComponent
81-
| CarouselComponent
82-
| LTOComponent
83-
>
84-
>;
77+
readonly components?: Array<NonNullable<TemplateComponent>>;
8578

8679
/**
8780
* @override
@@ -102,13 +95,7 @@ export class Template extends ClientMessage {
10295
constructor(
10396
name: string,
10497
language: string | Language,
105-
...components: (
106-
| HeaderComponent
107-
| BodyComponent
108-
| ButtonComponent
109-
| CarouselComponent
110-
| LTOComponent
111-
)[]
98+
...components: TemplateComponent[]
11299
) {
113100
super();
114101
this.name = name;
@@ -123,7 +110,7 @@ export class Template extends ClientMessage {
123110
};
124111
this.components = components
125112
.map((cmpt) => cmpt._build(pointers))
126-
.filter((e) => !!e);
113+
.filter((e) => !!e) as NonNullable<TemplateComponent>[];
127114
}
128115
}
129116

@@ -258,9 +245,7 @@ export class DateTime implements ClientTypedMessageComponent {
258245
*
259246
* @group Template
260247
*/
261-
export abstract class ButtonComponent
262-
implements ClientBuildableMessageComponent
263-
{
248+
export abstract class ButtonComponent implements TemplateComponent {
264249
/**
265250
* The type of the component
266251
*/
@@ -594,7 +579,7 @@ export class SkipButtonComponent extends ButtonComponent {
594579
*
595580
* @group Template
596581
*/
597-
export class HeaderComponent implements ClientBuildableMessageComponent {
582+
export class HeaderComponent implements TemplateComponent {
598583
/**
599584
* The type of the component
600585
*/
@@ -717,7 +702,7 @@ export class HeaderParameter {
717702
*
718703
* @group Template
719704
*/
720-
export class BodyComponent implements ClientBuildableMessageComponent {
705+
export class BodyComponent implements TemplateComponent {
721706
/**
722707
* The type of the component
723708
*/
@@ -817,7 +802,7 @@ export class BodyParameter {
817802
*/
818803
export class CarouselComponent
819804
extends ClientLimitedMessageComponent<CarouselCard, 10>
820-
implements ClientBuildableMessageComponent
805+
implements TemplateComponent
821806
{
822807
/**
823808
* The type of the component
@@ -910,7 +895,7 @@ export class CarouselCard implements ClientBuildableMessageComponent {
910895
*
911896
* @group Template
912897
*/
913-
export class LTOComponent implements ClientBuildableMessageComponent {
898+
export class LTOComponent implements TemplateComponent {
914899
/**
915900
* The type of the component
916901
*/

src/types.ts

+2
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,8 @@ export interface InteractiveAction extends ClientTypedMessageComponent {
308308
| "location_request_message";
309309
}
310310

311+
export interface TemplateComponent extends ClientBuildableMessageComponent {}
312+
311313
export type ClientMessageNames =
312314
| "text"
313315
| "audio"

0 commit comments

Comments
 (0)