Skip to content

Commit b4a947a

Browse files
authored
feat(parser): Update LiveChatViewerEngagementMessage (#856)
Update `LiveChatViewerEngagementMessage` to extend `YTNode` rather than `LiveChatMessageBase` to better align with the latest data provided by Innertube.
1 parent 0054690 commit b4a947a

File tree

1 file changed

+33
-5
lines changed

1 file changed

+33
-5
lines changed
Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,47 @@
11
import { Parser } from '../../../index.js';
2-
import { LiveChatMessageBase } from './LiveChatTextMessage.js';
32
import type { RawNode } from '../../../index.js';
4-
import type { YTNode } from '../../../helpers.js';
3+
import { YTNode } from '../../../helpers.js';
4+
import NavigationEndpoint from '../../NavigationEndpoint.js';
5+
import Text from '../../misc/Text.js';
56

6-
export default class LiveChatViewerEngagementMessage extends LiveChatMessageBase {
7+
export default class LiveChatViewerEngagementMessage extends YTNode {
78
static type = 'LiveChatViewerEngagementMessage';
89

10+
id: string;
11+
timestamp?: number;
12+
timestamp_usec?: string;
913
icon_type?: string;
10-
action_button: YTNode;
14+
message: Text;
15+
action_button: YTNode | null;
16+
menu_endpoint?: NavigationEndpoint;
17+
context_menu_accessibility_label?: string;
1118

1219
constructor(data: RawNode) {
13-
super(data);
20+
super();
21+
this.id = data.id;
22+
23+
if (Reflect.has(data, 'timestampUsec')) {
24+
this.timestamp = Math.floor(parseInt(data.timestampUsec) / 1000);
25+
this.timestamp_usec = data.timestampUsec;
26+
}
27+
1428
if (Reflect.has(data, 'icon') && Reflect.has(data.icon, 'iconType')) {
1529
this.icon_type = data.icon.iconType;
1630
}
31+
32+
this.message = new Text(data.message);
1733
this.action_button = Parser.parseItem(data.actionButton);
34+
35+
if (Reflect.has(data, 'contextMenuEndpoint')) {
36+
this.menu_endpoint = new NavigationEndpoint(data.contextMenuEndpoint);
37+
}
38+
39+
if (
40+
Reflect.has(data, 'contextMenuAccessibility') &&
41+
Reflect.has(data.contextMenuAccessibility, 'accessibilityData') &&
42+
Reflect.has(data.contextMenuAccessibility.accessibilityData, 'label')
43+
) {
44+
this.context_menu_accessibility_label = data.contextMenuAccessibility.accessibilityData.label;
45+
}
1846
}
1947
}

0 commit comments

Comments
 (0)