mirror of
https://github.com/LuanRT/YouTube.js.git
synced 2026-06-16 11:02:10 +00:00
* feat(Channel): Support new about popup * chore: Minor cleanup * fix(concatMemos): Merge duplicate nodes instead of overwriting * fix(Feed): `has_continuation` and `getContinuation()` avoid header continuations * chore(Channel): Remove unused import --------- Co-authored-by: LuanRT <luan.lrt4@gmail.com>
87 lines
2.5 KiB
TypeScript
87 lines
2.5 KiB
TypeScript
import type { ObservedArray } from '../helpers.js';
|
|
import { YTNode } from '../helpers.js';
|
|
import { Parser, type RawNode } from '../index.js';
|
|
import ChannelExternalLinkView from './ChannelExternalLinkView.js';
|
|
import NavigationEndpoint from './NavigationEndpoint.js';
|
|
import Text from './misc/Text.js';
|
|
|
|
export default class AboutChannelView extends YTNode {
|
|
static type = 'AboutChannelView';
|
|
|
|
description?: string;
|
|
description_label?: Text;
|
|
country?: string;
|
|
custom_links_label?: Text;
|
|
subscriber_count?: string;
|
|
view_count?: string;
|
|
joined_date?: Text;
|
|
canonical_channel_url?: string;
|
|
channel_id?: string;
|
|
additional_info_label?: Text;
|
|
custom_url_on_tap?: NavigationEndpoint;
|
|
video_count?: string;
|
|
sign_in_for_business_email?: Text;
|
|
links: ObservedArray<ChannelExternalLinkView>;
|
|
|
|
constructor(data: RawNode) {
|
|
super();
|
|
|
|
if (Reflect.has(data, 'description')) {
|
|
this.description = data.description;
|
|
}
|
|
|
|
if (Reflect.has(data, 'descriptionLabel')) {
|
|
this.description_label = Text.fromAttributed(data.descriptionLabel);
|
|
}
|
|
|
|
if (Reflect.has(data, 'country')) {
|
|
this.country = data.country;
|
|
}
|
|
|
|
if (Reflect.has(data, 'customLinksLabel')) {
|
|
this.custom_links_label = Text.fromAttributed(data.customLinksLabel);
|
|
}
|
|
|
|
if (Reflect.has(data, 'subscriberCountText')) {
|
|
this.subscriber_count = data.subscriberCountText;
|
|
}
|
|
|
|
if (Reflect.has(data, 'viewCountText')) {
|
|
this.view_count = data.viewCountText;
|
|
}
|
|
|
|
if (Reflect.has(data, 'joinedDateText')) {
|
|
this.joined_date = Text.fromAttributed(data.joinedDateText);
|
|
}
|
|
|
|
if (Reflect.has(data, 'canonicalChannelUrl')) {
|
|
this.canonical_channel_url = data.canonicalChannelUrl;
|
|
}
|
|
|
|
if (Reflect.has(data, 'channelId')) {
|
|
this.channel_id = data.channelId;
|
|
}
|
|
|
|
if (Reflect.has(data, 'additionalInfoLabel')) {
|
|
this.additional_info_label = Text.fromAttributed(data.additionalInfoLabel);
|
|
}
|
|
|
|
if (Reflect.has(data, 'customUrlOnTap')) {
|
|
this.custom_url_on_tap = new NavigationEndpoint(data.customUrlOnTap);
|
|
}
|
|
|
|
if (Reflect.has(data, 'videoCountText')) {
|
|
this.video_count = data.videoCountText;
|
|
}
|
|
|
|
if (Reflect.has(data, 'signInForBusinessEmail')) {
|
|
this.sign_in_for_business_email = Text.fromAttributed(data.signInForBusinessEmail);
|
|
}
|
|
|
|
if (Reflect.has(data, 'links')) {
|
|
this.links = Parser.parseArray(data.links, ChannelExternalLinkView);
|
|
} else {
|
|
this.links = [] as unknown as ObservedArray<ChannelExternalLinkView>;
|
|
}
|
|
}
|
|
} |