Feature/#48 migrate to typescript #151

Merged
Serraniel merged 30 commits from feature/#48-migrate-to-typescript into develop 2020-12-30 17:24:49 +01:00
Showing only changes of commit 30bd7c675d - Show all commits

View file

@ -5,26 +5,27 @@ import * as helper from '../utils/helpers';
const SCREENSHOT_TOOLTIP_ID = 'anilyr-screenshots-tooltip'; const SCREENSHOT_TOOLTIP_ID = 'anilyr-screenshots-tooltip';
const PLAYER_ID = 'player'; const PLAYER_ID = 'player';
export function init() { export function init(): void {
getGlobalConfiguration().getProperty(SETTINGS_playerAutoplayAfterScreenshot, value => { getGlobalConfiguration().getProperty(SETTINGS_playerAutoplayAfterScreenshot, value => {
if (value) { if (value) {
core.registerScript(node => { core.registerScript(node => {
if (helper.isHtmlElement(node) && node.id === SCREENSHOT_TOOLTIP_ID) { let element = node as HTMLElement;
observeScreenshotTooltip(node); if (helper.assigned(element) && element.id === SCREENSHOT_TOOLTIP_ID) {
observeScreenshotTooltip(element);
} }
}, "^/anime/[0-9]*/[0-9]*$"); }, "^/anime/[0-9]*/[0-9]*$");
} }
}); });
} }
function observeScreenshotTooltip(tooltip) { function observeScreenshotTooltip(tooltip: HTMLElement): void {
let observer = new MutationObserver(mutations => { let observer = new MutationObserver(mutations => {
mutations.forEach(mutation => { mutations.forEach(mutation => {
// Switched to invisible // Switched to invisible
if (!mutation.oldValue.includes('display: none') && mutation.target.style.display == 'none') { if (!mutation.oldValue.includes('display: none') && helper.isHtmlElement(mutation.target) && (mutation.target as HTMLElement).style.display == 'none') {
let player = findPlayer(); let playerElement = findPlayerElement();
if (helper.assigned(player)) { if (helper.assigned(playerElement)) {
resumePlayer(player); resumePlayer(playerElement);
} }
} }
}); });
@ -37,17 +38,15 @@ function observeScreenshotTooltip(tooltip) {
}); });
} }
function findPlayer() { function findPlayerElement(): HTMLVideoElement {
const PLAYER_TAG_NAME = 'VIDEO'; // tagName gives UpperCase
let playerCandidate = document.getElementById(PLAYER_ID); let playerCandidate = document.getElementById(PLAYER_ID);
if (playerCandidate.tagName === PLAYER_TAG_NAME) { if (playerCandidate instanceof HTMLVideoElement) {
return playerCandidate; return playerCandidate;
} }
return undefined; return undefined;
} }
function resumePlayer(player) { function resumePlayer(player: HTMLVideoElement) {
player.play(); player.play();
} }