11import { Parser } from '../../../index.js' ;
2- import { LiveChatMessageBase } from './LiveChatTextMessage.js' ;
32import 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