feat: add YouTube livechat renderers

Next up: refactor old livechat parser
This commit is contained in:
LuanRT
2022-06-23 03:46:53 -03:00
parent d2b3eead41
commit 7ec6d6dd21
4 changed files with 67 additions and 2 deletions

View File

@@ -0,0 +1,25 @@
'use strict';
const Parser = require('..');
const Text = require('./Text');
class LiveChat {
type = 'LiveChat';
constructor(data) {
this.header = Parser.parse(data.header);
this.initial_display_state = data.initialDisplayState;
this.continuation = data.continuations[0]?.reloadContinuationData?.continuation;
this.client_messages = {
reconnect_message: new Text(data.clientMessages.reconnectMessage),
unable_to_reconnect_message: new Text(data.clientMessages.unableToReconnectMessage),
fatal_error: new Text(data.clientMessages.fatalError),
reconnected_message: new Text(data.clientMessages.reconnectedMessage),
generic_error: new Text(data.clientMessages.genericError)
};
}
}
module.exports = LiveChat;

View File

@@ -0,0 +1,15 @@
'use strict';
const Parser = require('..');
class LiveChatHeader {
type = 'LiveChatHeader';
constructor(data) {
this.overflow_menu = Parser.parse(data.overflowMenu);
this.collapse_button = Parser.parse(data.collapseButton);
this.view_selector = Parser.parse(data.viewSelector);
}
}
module.exports = LiveChatHeader;

View File

@@ -0,0 +1,20 @@
'use strict';
const { observe } = require('../../../utils/Utils');
class SortFilterSubMenu {
type = 'SortFilterSubMenu';
constructor(data) {
this.sub_menu_items = observe(data.subMenuItems.map((item) => ({
title: item.title,
selected: item.selected,
continuation: item.continuation?.reloadContinuationData.continuation,
subtitle: item.subtitle
})));
this.label = data.accessibility.accessibilityData.label;
}
}
module.exports = SortFilterSubMenu;