Skip to content

Commit

Permalink
feat(parser): Add LiveChatSponsorshipsGiftPurchaseAnnouncement and …
Browse files Browse the repository at this point in the history
…`LiveChatSponsorshipsHeader` nodes (#793)

* feat(parser): Add `LiveChatSponsorshipsGiftPurchaseAnnouncement` and `LiveChatSponsorshipsHeader` nodes

* refactor: flatten nested field

* refactor: attempt to replace `author_*` fields with a single `Author` class

* fix: add back `author_*` fields in `LiveChatSponsorshipsHeader`

* fix: use `parseArray` to parse author_badges data

* refactor: revert `Author` logic

---------

Co-authored-by: absidue <[email protected]>
  • Loading branch information
jonz94 and absidue authored Nov 2, 2024
1 parent 34ae38c commit 4e9c2a5
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { YTNode } from '../../../helpers.js';
import { Parser, type RawNode } from '../../../index.js';
import LiveChatSponsorshipsHeader from './LiveChatSponsorshipsHeader.js';

export default class LiveChatSponsorshipsGiftPurchaseAnnouncement extends YTNode {
static type = 'LiveChatSponsorshipsGiftPurchaseAnnouncement';

id: string;
timestamp_usec: string;
author_external_channel_id: string;
header: LiveChatSponsorshipsHeader | null;

constructor(data: RawNode) {
super();
this.id = data.id;
this.timestamp_usec = data.timestampUsec;
this.author_external_channel_id = data.authorExternalChannelId;
this.header = Parser.parseItem(data.header, LiveChatSponsorshipsHeader);
}
}
31 changes: 31 additions & 0 deletions src/parser/classes/livechat/items/LiveChatSponsorshipsHeader.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import { Parser } from '../../../index.js';
import { YTNode } from '../../../helpers.js';
import type { ObservedArray } from '../../../helpers.js';
import type { RawNode } from '../../../index.js';
import NavigationEndpoint from '../../NavigationEndpoint.js';
import Text from '../../misc/Text.js';
import Thumbnail from '../../misc/Thumbnail.js';
import LiveChatAuthorBadge from '../../LiveChatAuthorBadge.js';

export default class LiveChatSponsorshipsHeader extends YTNode {
static type = 'LiveChatSponsorshipsHeader';

author_name: Text;
author_photo: Thumbnail[];
author_badges: ObservedArray<LiveChatAuthorBadge> | null;
primary_text: Text;
menu_endpoint: NavigationEndpoint;
context_menu_accessibility_label: string;
image: Thumbnail[];

constructor(data: RawNode) {
super();
this.author_name = new Text(data.authorName);
this.author_photo = Thumbnail.fromResponse(data.authorPhoto);
this.author_badges = Parser.parseArray(data.authorBadges, LiveChatAuthorBadge);
this.primary_text = new Text(data.primaryText);
this.menu_endpoint = new NavigationEndpoint(data.contextMenuEndpoint);
this.context_menu_accessibility_label = data.contextMenuAccessibility.accessibilityData.label;
this.image = Thumbnail.fromResponse(data.image);
}
}
2 changes: 2 additions & 0 deletions src/parser/nodes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,8 @@ export { default as LiveChatPaidSticker } from './classes/livechat/items/LiveCha
export { default as LiveChatPlaceholderItem } from './classes/livechat/items/LiveChatPlaceholderItem.js';
export { default as LiveChatProductItem } from './classes/livechat/items/LiveChatProductItem.js';
export { default as LiveChatRestrictedParticipation } from './classes/livechat/items/LiveChatRestrictedParticipation.js';
export { default as LiveChatSponsorshipsGiftPurchaseAnnouncement } from './classes/livechat/items/LiveChatSponsorshipsGiftPurchaseAnnouncement.js';
export { default as LiveChatSponsorshipsHeader } from './classes/livechat/items/LiveChatSponsorshipsHeader.js';
export { default as LiveChatTextMessage } from './classes/livechat/items/LiveChatTextMessage.js';
export { default as LiveChatTickerPaidMessageItem } from './classes/livechat/items/LiveChatTickerPaidMessageItem.js';
export { default as LiveChatTickerPaidStickerItem } from './classes/livechat/items/LiveChatTickerPaidStickerItem.js';
Expand Down

0 comments on commit 4e9c2a5

Please sign in to comment.