mirror of
https://github.com/ajayyy/SponsorBlock.git
synced 2025-12-07 12:07:11 +03:00
61 lines
2.1 KiB
TypeScript
61 lines
2.1 KiB
TypeScript
import * as React from "react";
|
|
import * as ReactDOM from "react-dom";
|
|
|
|
import SkipNoticeComponent from "../components/SkipNoticeComponent";
|
|
|
|
class SkipNotice {
|
|
UUID: string;
|
|
autoSkip: boolean;
|
|
// Contains functions and variables from the content script needed by the skip notice
|
|
contentContainer: () => any;
|
|
|
|
noticeElement: HTMLDivElement;
|
|
|
|
constructor(UUID: string, autoSkip: boolean = false, contentContainer) {
|
|
this.UUID = UUID;
|
|
this.autoSkip = autoSkip;
|
|
this.contentContainer = contentContainer;
|
|
|
|
//get reference node
|
|
let referenceNode = document.getElementById("player-container-id")
|
|
|| document.getElementById("movie_player") || document.querySelector("#player-container .video-js");
|
|
if (referenceNode == null) {
|
|
//for embeds
|
|
let player = document.getElementById("player");
|
|
referenceNode = player.firstChild as HTMLElement;
|
|
let index = 1;
|
|
|
|
//find the child that is the video player (sometimes it is not the first)
|
|
while (!referenceNode.classList.contains("html5-video-player") || !referenceNode.classList.contains("ytp-embed")) {
|
|
referenceNode = player.children[index] as HTMLElement;
|
|
|
|
index++;
|
|
}
|
|
}
|
|
|
|
let amountOfPreviousNotices = document.getElementsByClassName("sponsorSkipNotice").length;
|
|
//this is the suffix added at the end of every id
|
|
let idSuffix = this.UUID + amountOfPreviousNotices;
|
|
|
|
this.noticeElement = document.createElement("div");
|
|
this.noticeElement.id = "sponsorSkipNoticeContainer" + idSuffix;
|
|
|
|
referenceNode.prepend(this.noticeElement);
|
|
|
|
ReactDOM.render(
|
|
<SkipNoticeComponent UUID={UUID}
|
|
autoSkip={autoSkip}
|
|
contentContainer={contentContainer}
|
|
closeListener={() => this.close()} />,
|
|
this.noticeElement
|
|
);
|
|
}
|
|
|
|
close() {
|
|
ReactDOM.unmountComponentAtNode(this.noticeElement);
|
|
|
|
this.noticeElement.remove();
|
|
}
|
|
}
|
|
|
|
export default SkipNotice; |