Skip to content

Commit ccf8200

Browse files
fix(Parser): parse all contents in home tab
1 parent 401b4c3 commit ccf8200

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

src/parser/classes/Tab.ts

+2
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,14 @@ export default class Tab extends YTNode {
1212
selected: boolean;
1313
endpoint: NavigationEndpoint;
1414
content: SectionList | MusicQueue | RichGrid | null;
15+
contents: (SectionList | MusicQueue | RichGrid)[] | null;
1516

1617
constructor(data: RawNode) {
1718
super();
1819
this.title = data.title || 'N/A';
1920
this.selected = !!data.selected;
2021
this.endpoint = new NavigationEndpoint(data.endpoint);
2122
this.content = Parser.parseItem(data.content, [ SectionList, MusicQueue, RichGrid ]);
23+
this.contents = Parser.parseItems(data.content, [ SectionList, MusicQueue, RichGrid ]);
2224
}
2325
}

src/parser/parser.ts

+23
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,29 @@ export function parseResponse<T extends IParsedResponse = IParsedResponse>(data:
521521
return parsed_data;
522522
}
523523

524+
/**
525+
* Parses multiple items
526+
* @param data - The data to parse.
527+
* @param validTypes - YTNode types that are allowed to be parsed.
528+
*/
529+
export function parseItems<T extends YTNode, K extends YTNodeConstructor<T>[]>(data: RawNode | undefined, validTypes: K): InstanceType<K[number]>[] | null;
530+
export function parseItems<T extends YTNode>(data: RawNode | undefined, validTypes: YTNodeConstructor<T>): T[] | null;
531+
export function parseItems(data?: RawNode): YTNode[];
532+
export function parseItems(data?: RawNode, validTypes?: YTNodeConstructor | YTNodeConstructor[]) {
533+
if (!data) return null;
534+
const keys = Object.keys(data);
535+
const results: YTNode[] = [];
536+
for (const key of keys) {
537+
const temp_data = { [key]: data[key] };
538+
539+
const result = parseItem(temp_data, validTypes as YTNodeConstructor);
540+
if (result) {
541+
results.push(result);
542+
}
543+
}
544+
return results;
545+
}
546+
524547
/**
525548
* Parses an item.
526549
* @param data - The data to parse.

0 commit comments

Comments
 (0)