Skip to content

Commit 76ef3b9

Browse files
author
Evan Greer
committed
feat: adds IterableEmbeddedMessageElements class
1 parent 547377c commit 76ef3b9

1 file changed

Lines changed: 50 additions & 9 deletions

File tree

src/embedded/classes/IterableEmbeddedMessageElements.ts

Lines changed: 50 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,22 @@ import { IterableEmbeddedMessageButton } from './IterableEmbeddedMessageButton';
33
import { IterableEmbeddedMessageText } from './IterableEmbeddedMessageText';
44

55
export class IterableEmbeddedMessageElements {
6-
readonly title: string;
7-
readonly body: string;
6+
readonly title?: string;
7+
readonly body?: string;
88
readonly mediaUrl?: string;
99
readonly mediaUrlCaption?: string;
1010
readonly defaultAction?: IterableEmbeddedMessageDefaultAction;
1111
readonly buttons?: IterableEmbeddedMessageButton[];
1212
readonly text?: IterableEmbeddedMessageText[];
13+
1314
constructor(
14-
title: string,
15-
body: string,
16-
mediaUrl: string | undefined,
17-
mediaUrlCaption: string | undefined,
18-
defaultAction: IterableEmbeddedMessageDefaultAction | undefined,
19-
buttons: IterableEmbeddedMessageButton[] | undefined,
20-
text: IterableEmbeddedMessageText[] | undefined
15+
title?: string,
16+
body?: string,
17+
mediaUrl?: string,
18+
mediaUrlCaption?: string,
19+
defaultAction?: IterableEmbeddedMessageDefaultAction,
20+
buttons?: IterableEmbeddedMessageButton[],
21+
text?: IterableEmbeddedMessageText[]
2122
) {
2223
this.title = title;
2324
this.body = body;
@@ -27,4 +28,44 @@ export class IterableEmbeddedMessageElements {
2728
this.buttons = buttons;
2829
this.text = text;
2930
}
31+
32+
static fromDict(
33+
dict: Partial<EmbeddedMessageElementsDict>
34+
): IterableEmbeddedMessageElements {
35+
const title = dict.title;
36+
const body = dict.body;
37+
const mediaUrl = dict.mediaUrl;
38+
const mediaUrlCaption = dict.mediaUrlCaption;
39+
const defaultAction = dict.defaultAction
40+
? IterableEmbeddedMessageDefaultAction.fromDict(dict.defaultAction)
41+
: undefined;
42+
43+
const buttons = dict.buttons?.map((button) =>
44+
IterableEmbeddedMessageButton.fromDict(button)
45+
);
46+
47+
const text = dict.text?.map((text) =>
48+
IterableEmbeddedMessageText.fromDict(text)
49+
);
50+
51+
return new IterableEmbeddedMessageElements(
52+
title,
53+
body,
54+
mediaUrl,
55+
mediaUrlCaption,
56+
defaultAction,
57+
buttons,
58+
text
59+
);
60+
}
61+
}
62+
63+
export interface EmbeddedMessageElementsDict {
64+
title?: string;
65+
body?: string;
66+
mediaUrl?: string;
67+
mediaUrlCaption?: string;
68+
defaultAction?: IterableEmbeddedMessageDefaultAction;
69+
buttons?: IterableEmbeddedMessageButton[];
70+
text?: IterableEmbeddedMessageText[];
3071
}

0 commit comments

Comments
 (0)