Skip to content

Commit

Permalink
feat(Parser): Add AvatarStackView
Browse files Browse the repository at this point in the history
  • Loading branch information
LuanRT committed Dec 31, 2024
1 parent 3a11b99 commit c631022
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 3 deletions.
26 changes: 26 additions & 0 deletions src/parser/classes/AvatarStackView.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { type ObservedArray, YTNode } from '../helpers.js';
import type { RawNode } from '../types/index.js';
import { Parser } from '../index.js';

import Text from './misc/Text.js';
import AvatarView from './AvatarView.js';
import RendererContext from './misc/RendererContext.js';

export default class AvatarStackView extends YTNode {
static type = 'AvatarStackView';

public avatars: ObservedArray<AvatarView>;
public text?: Text;
public renderer_context?: RendererContext;

constructor(data: RawNode) {
super();
this.avatars = Parser.parseArray(data.avatars, AvatarView);

if (Reflect.has(data, 'text'))
this.text = Text.fromAttributed(data.text);

if (Reflect.has(data, 'rendererContext'))
this.renderer_context = new RendererContext(data.rendererContext);
}
}
10 changes: 7 additions & 3 deletions src/parser/classes/ContentMetadataView.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,28 @@
import { YTNode } from '../helpers.js';
import type { RawNode } from '../index.js';
import { Text } from '../misc.js';
import { Parser } from '../index.js';
import AvatarStackView from './AvatarStackView.js';

export type MetadataRow = {
metadata_parts?: {
text: Text;
avatar_stack: AvatarStackView | null;
}[];
};

export default class ContentMetadataView extends YTNode {
static type = 'ContentMetadataView';

metadata_rows: MetadataRow[];
delimiter: string;
public metadata_rows: MetadataRow[];
public delimiter: string;

constructor(data: RawNode) {
super();
this.metadata_rows = data.metadataRows.map((row: RawNode) => ({
metadata_parts: row.metadataParts?.map((part: RawNode) => ({
text: Text.fromAttributed(part.text || {})
text: Text.fromAttributed(part.text || {}),
avatar_stack: Parser.parseItem(part.avatarStack, AvatarStackView)
}))
}));
this.delimiter = data.delimiter;
Expand Down
1 change: 1 addition & 0 deletions src/parser/nodes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ export { default as AlertWithButton } from './classes/AlertWithButton.js';
export { default as AttributionView } from './classes/AttributionView.js';
export { default as AudioOnlyPlayability } from './classes/AudioOnlyPlayability.js';
export { default as AutomixPreviewVideo } from './classes/AutomixPreviewVideo.js';
export { default as AvatarStackView } from './classes/AvatarStackView.js';
export { default as AvatarView } from './classes/AvatarView.js';
export { default as BackgroundPromo } from './classes/BackgroundPromo.js';
export { default as BackstageImage } from './classes/BackstageImage.js';
Expand Down

0 comments on commit c631022

Please sign in to comment.