Skip to content

Commit

Permalink
feat(parser): SharedPost
Browse files Browse the repository at this point in the history
Add support for SharedPost in community tab.
Related to issue #331
  • Loading branch information
Wykerd committed Mar 2, 2023
1 parent 0ad26f2 commit 33e8ce3
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/core/Feed.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { concatMemos, InnertubeError } from '../utils/Utils.js';
import type Actions from './Actions.js';

import BackstagePost from '../parser/classes/BackstagePost.js';
import SharedPost from '../parser/classes/SharedPost.js';
import Channel from '../parser/classes/Channel.js';
import CompactVideo from '../parser/classes/CompactVideo.js';
import GridChannel from '../parser/classes/GridChannel.js';
Expand Down Expand Up @@ -100,7 +101,7 @@ class Feed<T extends IParsedResponse = IParsedResponse> {
* Get all the community posts in the feed
*/
get posts() {
return this.#memo.getType<Post | BackstagePost>([ BackstagePost, Post ]);
return this.#memo.getType<Post | BackstagePost | SharedPost>([ BackstagePost, Post, SharedPost ]);
}

/**
Expand Down
36 changes: 36 additions & 0 deletions src/parser/classes/SharedPost.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import { YTNode } from '../helpers.js';
import Author from './misc/Author.js';
import { YTNodes } from '../index.js';
import Parser from '../parser.js';
import Thumbnail from './misc/Thumbnail.js';
import NavigationEndpoint from './NavigationEndpoint.js';
import Text from './misc/Text.js';

class SharedPost extends YTNode {
static type = 'SharedPost';

thumbnail: Thumbnail[];
content: Text;
published: Text;
menu: YTNodes.Menu | null;
original_post: YTNodes.BackstagePost | null;
id: string;
endpoint: NavigationEndpoint;
expand_button: YTNodes.Button | null;
author: Author;

constructor(data: any) {
super();
this.thumbnail = Thumbnail.fromResponse(data.thumbnail);
this.content = new Text(data.content);
this.published = new Text(data.publishedTimeText);
this.menu = Parser.parseItem(data.actionMenu, [ YTNodes.Menu ]);
this.original_post = Parser.parseItem(data.originalPost, [ YTNodes.BackstagePost ]);
this.id = data.postId;
this.endpoint = new NavigationEndpoint(data.navigationEndpoint);
this.expand_button = Parser.parseItem(data.expandButton, [ YTNodes.Button ]);
this.author = new Author(data.displayName, undefined);
}
}

export default SharedPost;
3 changes: 3 additions & 0 deletions src/parser/map.ts
Original file line number Diff line number Diff line change
Expand Up @@ -528,6 +528,8 @@ import { default as SettingsSidebar } from './classes/SettingsSidebar.js';
export { SettingsSidebar };
import { default as SettingsSwitch } from './classes/SettingsSwitch.js';
export { SettingsSwitch };
import { default as SharedPost } from './classes/SharedPost.js';
export { SharedPost };
import { default as Shelf } from './classes/Shelf.js';
export { Shelf };
import { default as ShowingResultsFor } from './classes/ShowingResultsFor.js';
Expand Down Expand Up @@ -912,6 +914,7 @@ const map: Record<string, YTNodeConstructor> = {
SettingsOptions,
SettingsSidebar,
SettingsSwitch,
SharedPost,
Shelf,
ShowingResultsFor,
SimpleCardContent,
Expand Down

0 comments on commit 33e8ce3

Please sign in to comment.