From 494ee8776af0839d3ee2cca3d2fd836680cfdb9e Mon Sep 17 00:00:00 2001 From: LuanRT Date: Fri, 18 Aug 2023 08:09:04 -0300 Subject: [PATCH] feat(parser): add `MusicMultiRowListItem` Used to display podcasts. --- src/parser/classes/MusicMultiRowListItem.ts | 44 +++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/parser/classes/MusicMultiRowListItem.ts diff --git a/src/parser/classes/MusicMultiRowListItem.ts b/src/parser/classes/MusicMultiRowListItem.ts new file mode 100644 index 000000000..70235ca6d --- /dev/null +++ b/src/parser/classes/MusicMultiRowListItem.ts @@ -0,0 +1,44 @@ +import { YTNode } from "../helpers.js"; +import { Parser, type RawNode } from "../index.js"; +import { Text } from "../misc.js"; + +import Menu from "./menus/Menu.js"; +import MusicItemThumbnailOverlay from "./MusicItemThumbnailOverlay.js"; +import MusicThumbnail from "./MusicThumbnail.js"; +import NavigationEndpoint from "./NavigationEndpoint.js"; + +export default class MusicMultiRowListItem extends YTNode { + static type = 'MusicMultiRowListItem'; + + thumbnail: MusicThumbnail | null; + overlay: MusicItemThumbnailOverlay | null; + on_tap: NavigationEndpoint; + menu: Menu | null; + subtitle: Text; + title: Text; + second_title?: Text; + description?: Text; + display_style?: string; + + constructor(data: RawNode) { + super(); + this.thumbnail = Parser.parseItem(data.thumbnail, MusicThumbnail); + this.overlay = Parser.parseItem(data.overlay, MusicItemThumbnailOverlay); + this.on_tap = new NavigationEndpoint(data.onTap); + this.menu = Parser.parseItem(data.menu, Menu); + this.subtitle = new Text(data.subtitle); + this.title = new Text(data.title); + + if (Reflect.has(data, 'secondTitle')) { + this.second_title = new Text(data.secondTitle); + } + + if (Reflect.has(data, 'description')) { + this.description = new Text(data.description); + } + + if (Reflect.has(data, 'displayStyle')) { + this.display_style = data.displayStyle; + } + } +} \ No newline at end of file