From cbb2535b2492777b0045be5fcf9bece03fe4f84e Mon Sep 17 00:00:00 2001 From: Luan Date: Mon, 24 Mar 2025 10:49:54 -0300 Subject: [PATCH] feat(MusicImmersiveHeader): Parse buttons and menu --- src/parser/classes/MusicImmersiveHeader.ts | 34 ++++++++++++++++------ 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/src/parser/classes/MusicImmersiveHeader.ts b/src/parser/classes/MusicImmersiveHeader.ts index 8b167625..87a02e8c 100644 --- a/src/parser/classes/MusicImmersiveHeader.ts +++ b/src/parser/classes/MusicImmersiveHeader.ts @@ -1,25 +1,41 @@ import { YTNode } from '../helpers.js'; import { Parser, type RawNode } from '../index.js'; + +import Button from './Button.js'; import MusicThumbnail from './MusicThumbnail.js'; +import NavigationEndpoint from './NavigationEndpoint.js'; +import SubscribeButton from './SubscribeButton.js'; +import ToggleButton from './ToggleButton.js'; + +import Menu from './menus/Menu.js'; import Text from './misc/Text.js'; export default class MusicImmersiveHeader extends YTNode { static type = 'MusicImmersiveHeader'; - title: Text; - description: Text; - thumbnail: MusicThumbnail | null; + public title: Text; + public menu: Menu | null; + public more_button: ToggleButton | null; + public play_button: Button | null; + public share_endpoint?: NavigationEndpoint; + public start_radio_button: Button | null; + public subscription_button: SubscribeButton | null; + public description: Text; + public thumbnail: MusicThumbnail | null; constructor(data: RawNode) { super(); this.title = new Text(data.title); + this.menu = Parser.parseItem(data.menu, Menu); + this.more_button = Parser.parseItem(data.moreButton, ToggleButton); + this.play_button = Parser.parseItem(data.playButton, Button); + + if ('shareEndpoint' in data) + this.share_endpoint = new NavigationEndpoint(data.shareEndpoint); + + this.start_radio_button = Parser.parseItem(data.startRadioButton, Button); + this.subscription_button = Parser.parseItem(data.subscriptionButton, SubscribeButton); this.description = new Text(data.description); this.thumbnail = Parser.parseItem(data.thumbnail, MusicThumbnail); - /** - Not useful for now. - this.menu = Parser.parse(data.menu); - this.play_button = Parser.parse(data.playButton); - this.start_radio_button = Parser.parse(data.startRadioButton); - */ } } \ No newline at end of file