diff --git a/src/javascript/enhancements/anilyr.js b/src/javascript/enhancements/anilyr.js new file mode 100644 index 0000000..f80ebd8 --- /dev/null +++ b/src/javascript/enhancements/anilyr.js @@ -0,0 +1,48 @@ +import * as core from '../utils/aniwatchCore'; +import * as helper from '../utils/helpers'; + +const SCREENSHOT_TOOLTIP_ID = 'anilyr-screenshots-tooltip'; +const PLAYER_ID = 'player'; + +export function init() { + core.registerScript(node => { + if (helper.isHtmlElement(node) && node.id === SCREENSHOT_TOOLTIP_ID) { + observeScreenshotTooltip(node); + } + }, "^/anime/[0-9]*/[0-9]*$"); +} + +function observeScreenshotTooltip(tooltip) { + let observer = new MutationObserver(mutations => { + mutations.forEach(mutation => { + // Switched to invisible + if (!mutation.oldValue.includes('display: none') && mutation.target.style.display == 'none') { + let player = findPlayer(); + if(typeof player !== 'undefined'){ + resumePlayer(player); + } + } + }); + }); + + observer.observe(tooltip, { + attributes: true, + attributeOldValue: true, + attributeFilter: ['style'], + }); +} + +function findPlayer() { + const PLAYER_TAG_NAME = 'VIDEO'; // tagName gives UpperCase + + let playerCandidate = document.getElementById(PLAYER_ID); + if (playerCandidate.tagName === PLAYER_TAG_NAME) { + return playerCandidate; + } + + return undefined; +} + +function resumePlayer(player) { + player.play(); +} \ No newline at end of file diff --git a/src/javascript/index.js b/src/javascript/index.js index 408eba4..9542b29 100644 --- a/src/javascript/index.js +++ b/src/javascript/index.js @@ -3,6 +3,7 @@ import { initCore } from './utils/aniwatchCore'; // helper import { initHelpers } from './utils/helpers'; // enhancements +import { init as anilyr } from './enhancements/anilyr'; import { init as animeRequests } from './enhancements/animeRequests'; import { init as languageDisplay } from './enhancements/languageDisplay'; import { init as notifications } from './enhancements/notifications'; @@ -15,6 +16,7 @@ initCore(); initHelpers(); // enhancements +anilyr(); animeRequests(); languageDisplay(); notifications();