mirror of
https://github.com/LuanRT/YouTube.js.git
synced 2026-06-13 09:32:12 +00:00
feat(parser): Add LiveChatSponsorshipsGiftPurchaseAnnouncement and 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 <48293849+absidue@users.noreply.github.com>
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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';
|
||||
|
||||
Reference in New Issue
Block a user