refactor: migrate parsers to TS (#133)

* dev: finish top-level parsers TS migration

* dev: migrate menu renderers to TS

* chore: fix ts errors

* dev: finish ts migration 🎉
This commit is contained in:
LuanRT
2022-08-20 03:18:17 -03:00
committed by GitHub
parent b101a39d30
commit 34281e2445
206 changed files with 1747 additions and 608 deletions

View File

@@ -0,0 +1,55 @@
import Text from './misc/Text';
import NavigationEndpoint from './NavigationEndpoint';
import { YTNode } from '../helpers';
class ToggleButton extends YTNode {
static type = 'ToggleButton';
text: Text;
toggled_text: Text;
tooltip: string;
toggled_tooltip: string;
is_toggled: boolean;
is_disabled: boolean;
icon_type: string;
like_count;
short_like_count;
endpoint: NavigationEndpoint;
toggled_endpoint: NavigationEndpoint;
button_id: string | null;
target_id: string | null;
constructor(data: any) {
super();
this.text = new Text(data.defaultText);
this.toggled_text = new Text(data.toggledText);
this.tooltip = data.defaultTooltip;
this.toggled_tooltip = data.toggledTooltip;
this.is_toggled = data.isToggled;
this.is_disabled = data.isDisabled;
this.icon_type = data.defaultIcon.iconType;
const acc_label =
data?.defaultText?.accessibility?.accessibilityData?.label ||
data?.accessibilityData?.accessibilityData?.label ||
data?.accessibility?.label;
if (this.icon_type == 'LIKE') {
this.like_count = parseInt(acc_label.replace(/\D/g, ''));
this.short_like_count = new Text(data.defaultText).toString();
}
this.endpoint =
data.defaultServiceEndpoint?.commandExecutorCommand?.commands ?
new NavigationEndpoint(data.defaultServiceEndpoint.commandExecutorCommand.commands.pop()) :
new NavigationEndpoint(data.defaultServiceEndpoint);
this.toggled_endpoint = new NavigationEndpoint(data.toggledServiceEndpoint);
this.button_id = data.toggleButtonSupportedData?.toggleButtonIdData?.id || null;
this.target_id = data.targetId || null;
}
}
export default ToggleButton;