feat: add full support for refinement cards

This commit is contained in:
LuanRT
2022-06-13 04:20:49 -03:00
parent 797c545b80
commit b6a898f733
10 changed files with 134 additions and 72 deletions

View File

@@ -5,7 +5,7 @@ const Text = require('./Text');
class RichListHeader {
constructor(data) {
this.title = new Text(data.title);
this.type = data.icon.iconType;
this.icon_type = data.icon.iconType;
}
}

View File

@@ -8,9 +8,9 @@ class SearchRefinementCard {
type = 'searchRefinementCardRenderer';
constructor(data) {
this.thumbnail = new Thumbnail(data.thumbnail).thumbnails;
this.thumbnails = new Thumbnail(data.thumbnail).thumbnails;
this.endpoint = new NavigationEndpoint(data.searchEndpoint);
this.query = new Text(data.query);
this.query = new Text(data.query).toString();
}
}

View File

@@ -9,10 +9,17 @@ class Shelf {
constructor(data) {
this.title = new Text(data.title);
this.endpoint = new NavigationEndpoint(data.endpoint);
data.endpoint &&
(this.endpoint = new NavigationEndpoint(data.endpoint));
this.content = Parser.parse(data.content) || [];
this.icon_type = data.icon?.iconType || null;
this.menu = Parser.parse(data.menu);
data.icon?.iconType &&
(this.icon_type = data.icon?.iconType);
data.menu &&
(this.menu = Parser.parse(data.menu));
}
}

View File

@@ -5,18 +5,9 @@ const Parser = require('..');
class TwoColumnBrowseResults {
type = 'twoColumnBrowseResultsRenderer';
#data;
constructor(data) {
this.#data = data;
}
get tabs() {
return Parser.parse(this.#data.tabs);
}
get secondary_contents() {
return Parser.parse(this.#data.secondaryContents);
this.tabs = Parser.parse(data.tabs);
this.secondary_contents = Parser.parse(data.secondaryContents);
}
}

View File

@@ -5,18 +5,9 @@ const Parser = require('..');
class TwoColumnSearchResults {
type = 'twoColumnSearchResultsRenderer';
#data;
constructor(data) {
this.#data = data;
}
get primary_contents() {
return Parser.parse(this.#data.primaryContents);
}
get secondary_contents() {
return Parser.parse(this.#data.secondaryContents);
this.primary_contents = Parser.parse(data.primaryContents);
this.secondary_contents = Parser.parse(data.secondaryContents);
}
}

View File

@@ -5,22 +5,10 @@ const Parser = require('..');
class TwoColumnWatchNextResults {
type = 'twoColumnWatchNextResults';
#data;
constructor(data) {
this.#data = data;
}
get results() {
return Parser.parse(this.#data.results.results.contents);
}
get secondary_results() {
return Parser.parse(this.#data.secondaryResults?.secondaryResults.results);
}
get conversation_bar() {
return Parser.parse(this.#data?.conversationBar);
this.results = Parser.parse(data.results?.results.contents);
this.secondary_results = Parser.parse(data.secondaryResults?.secondaryResults.results);
this.conversation_bar = Parser.parse(data?.conversationBar);
}
}

View File

@@ -82,7 +82,7 @@ class Parser {
return formats?.map((format) => new Format(format)) || [];
}
static parse(data, ctx) {
static parse(data) {
if (!data)
return null;
@@ -97,7 +97,7 @@ class Parser {
try {
const TargetClass = require('./classes/' + classname);
results.push(new TargetClass(item[keys[0]], ctx));
results.push(new TargetClass(item[keys[0]]));
} catch (err) {
this.formatError({ classname, classdata: item[keys[0]], err });
return null;
@@ -109,11 +109,11 @@ class Parser {
const keys = Object.keys(data);
const classname = this.sanitizeClassName(keys[0]);
if (this.shouldIgnore(classname))return;
if (this.shouldIgnore(classname)) return;
try {
const TargetClass = require('./classes/' + classname);
return new TargetClass(data[keys[0]], ctx);
return new TargetClass(data[keys[0]]);
} catch (err) {
this.formatError({ classname, classdata: data[keys[0]], err });
return null;