aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAjay Ramachandran <[email protected]>2019-07-30 18:22:45 -0400
committerGitHub <[email protected]>2019-07-30 18:22:45 -0400
commit7ed72fad406269a72151e4ee55d7971ed5930897 (patch)
treeb5cc63b7263092cb0b19b1abe2b37ffd441d4979
parenta1c8ecabca0a9070d26872ea1db0c037da3cf0a7 (diff)
parenta2b4f8d141a5100f97cf98711e6e68f4fe816e36 (diff)
downloadSponsorBlock-7ed72fad406269a72151e4ee55d7971ed5930897.tar.gz
SponsorBlock-7ed72fad406269a72151e4ee55d7971ed5930897.zip
Merge pull request #52 from ajayyy/experimentalv1.0.21
Firefox fixes
-rw-r--r--background.js9
-rw-r--r--content.js62
-rw-r--r--firefox_manifest.json6
-rw-r--r--manifest.json8
-rw-r--r--popup.css101
-rw-r--r--popup.html278
-rw-r--r--popup.js1744
7 files changed, 1156 insertions, 1052 deletions
diff --git a/background.js b/background.js
index adb86553..55729fff 100644
--- a/background.js
+++ b/background.js
@@ -3,6 +3,9 @@ var previousVideoID = null
//the id of this user, randomly generated once per install
var userID = null;
+//the last video id loaded, to make sure it is a video id change
+var sponsorVideoID = null;
+
//when a new tab is highlighted
chrome.tabs.onActivated.addListener(
function(activeInfo) {
@@ -162,6 +165,12 @@ function videoIDChange(currentVideoID, tabId) {
id: currentVideoID
});
+ //not a url change
+ if (sponsorVideoID == currentVideoID){
+ return;
+ }
+ sponsorVideoID = currentVideoID;
+
//warn them if they had unsubmitted times
if (previousVideoID != null) {
//get the sponsor times from storage
diff --git a/content.js b/content.js
index 53347e07..c66e6937 100644
--- a/content.js
+++ b/content.js
@@ -59,8 +59,10 @@ chrome.storage.sync.get(["dontShowNoticeAgain"], function(result) {
}
});
-chrome.runtime.onMessage.addListener( // Detect URL Changes
- function(request, sender, sendResponse) {
+//get messages from the background script and the popup
+chrome.runtime.onMessage.addListener(messageListener);
+
+function messageListener(request, sender, sendResponse) {
//message from background script
if (request.message == "ytvideoid") {
videoIDChange(request.id);
@@ -118,7 +120,7 @@ chrome.runtime.onMessage.addListener( // Detect URL Changes
if (request.message == "trackViewCount") {
trackViewCount = request.value;
}
-});
+}
//check for hotkey pressed
document.onkeydown = function(e){
@@ -474,31 +476,43 @@ function openInfoMenu() {
//hide info button
document.getElementById("infoButton").style.display = "none";
- let popup = document.createElement("div");
- popup.id = "sponsorBlockPopupContainer";
-
- let popupFrame = document.createElement("iframe");
- popupFrame.id = "sponsorBlockPopupFrame"
- popupFrame.src = chrome.extension.getURL("popup.html");
- popupFrame.className = "popup";
+ sendRequestToCustomServer('GET', chrome.extension.getURL("popup.html"), function(xmlhttp) {
+ if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
+ var popup = document.createElement("div");
+ popup.id = "sponsorBlockPopupContainer";
+ popup.innerHTML = xmlhttp.responseText
+
+ //close button
+ let closeButton = document.createElement("div");
+ closeButton.innerText = "Close Popup";
+ closeButton.classList = "smallLink";
+ closeButton.setAttribute("align", "center");
+ closeButton.addEventListener("click", closeInfoMenu);
+
+ //add the close button
+ popup.prepend(closeButton);
+
+ let parentNode = document.getElementById("secondary");
+ if (parentNode == null) {
+ //old youtube theme
+ parentNode = document.getElementById("watch7-sidebar-contents");
+ }
- //close button
- let closeButton = document.createElement("div");
- closeButton.innerText = "Close Popup";
- closeButton.classList = "smallLink";
- closeButton.setAttribute("align", "center");
- closeButton.addEventListener("click", closeInfoMenu);
+ //make the logo source not 404
+ //query selector must be used since getElementByID doesn't work on a node and this isn't added to the document yet
+ let logo = popup.querySelector("#sponsorBlockPopupLogo");
+ logo.src = chrome.extension.getURL("icons/LogoSponsorBlocker256px.png");
- popup.appendChild(closeButton);
- popup.appendChild(popupFrame);
+ //remove the style sheet and font that are not necessary
+ popup.querySelector("#sponorBlockPopupFont").remove();
+ popup.querySelector("#sponorBlockStyleSheet").remove();
- let parentNode = document.getElementById("secondary");
- if (parentNode == null) {
- //old youtube theme
- parentNode = document.getElementById("watch7-sidebar-contents");
- }
+ parentNode.insertBefore(popup, parentNode.firstChild);
- parentNode.prepend(popup);
+ //run the popup init script
+ runThePopup();
+ }
+ });
}
function closeInfoMenu() {
diff --git a/firefox_manifest.json b/firefox_manifest.json
index d8e2296b..3948c08a 100644
--- a/firefox_manifest.json
+++ b/firefox_manifest.json
@@ -10,11 +10,13 @@
],
"js": [
"config.js",
- "content.js"
+ "content.js",
+ "popup.js"
],
"css": [
"content.css",
- "./libs/Source+Sans+Pro.css"
+ "./libs/Source+Sans+Pro.css",
+ "popup.css"
]
}
],
diff --git a/manifest.json b/manifest.json
index b683f4d7..0f427829 100644
--- a/manifest.json
+++ b/manifest.json
@@ -1,7 +1,7 @@
{
"name": "SponsorBlock for YouTube - Skip Sponsorships",
"short_name": "SponsorBlock",
- "version": "1.0.16",
+ "version": "1.0.21",
"description": "Skip over sponsorship on YouTube videos. Report sponsors on videos you watch to save the time of others.",
"content_scripts": [
{
@@ -10,11 +10,13 @@
],
"js": [
"config.js",
- "content.js"
+ "content.js",
+ "popup.js"
],
"css": [
"content.css",
- "./libs/Source+Sans+Pro.css"
+ "./libs/Source+Sans+Pro.css",
+ "popup.css"
]
}
],
diff --git a/popup.css b/popup.css
index a33f408a..d1efc61f 100644
--- a/popup.css
+++ b/popup.css
@@ -1,45 +1,84 @@
-* {
+/* reset some properties to default (youtube messes with them */
+p.popupElement {
+ margin-block-start: 1em;
+ margin-block-end: 1em;
+ margin-inline-start: 0px;
+ margin-inline-end: 0px;
+}
+
+h1.popupElement {
+ margin-block-start: 0.67em;
+ margin-block-end: 0.67em;
+ margin-inline-start: 0px;
+ margin-inline-end: 0px;
+ font-weight: bold;
+}
+
+h2.popupElement {
+ margin-block-start: 0.83em;
+ margin-block-end: 0.83em;
+ margin-inline-start: 0px;
+ margin-inline-end: 0px;
+ font-weight: bold;
+}
+
+h3.popupElement {
+ margin-block-start: 1em;
+ margin-block-end: 1em;
+ margin-inline-start: 0px;
+ margin-inline-end: 0px;
+ font-weight: bold;
+}
+
+sub.popupElement {
+ font-size: smaller;
+}
+/* end reset */
+
+.popupElement {
font-family: 'Source Sans Pro', sans-serif;
+
+ color: black;
}
-h1 {
+h1.popupElement {
margin-top: 0px;
}
-body {
- font-size: 14px;
- min-width: 300px;
- background-color: #ffd9d9;
+.popupBody {
+ font-size: 14px;
+ background-color: #ffd9d9;
+ padding: 5px;
}
-.recordingSubtitle {
+.recordingSubtitle.popupElement {
margin-bottom: 10px;
}
-.voteButton {
+.voteButton.popupElement {
height: 32px;
margin-right: 15px;
cursor: pointer;
}
-.voteButton:hover {
+.voteButton:hover.popupElement {
filter: brightness(80%);
}
-#discordButtonContainer {
+#discordButtonContainer.popupElement {
font-size: 12px;
}
-.sponsorTime {
+.sponsorTime.popupElement {
font-size: 20px;
}
-.smallLink {
+.smallLink.popupElement {
font-size: 10px;
text-decoration: underline;
cursor: pointer;
}
-.mediumLink {
+.mediumLink.popupElement {
font-size: 15px;
padding-left: 15px;
padding-right: 15px;
@@ -47,8 +86,8 @@ body {
cursor: pointer;
}
-.greenButton {
- background-color:#ec1c1c;
+.greenButton.popupElement {
+ background-color:#ec1c1c;
-moz-border-radius:28px;
-webkit-border-radius:28px;
border-radius:28px;
@@ -61,19 +100,19 @@ body {
text-decoration:none;
text-shadow:0px 0px 0px #662727;
}
-.greenButton:hover {
+.greenButton:hover.popupElement {
background-color:#bf2a2a;
}
-.greenButton:focus {
+.greenButton:focus.popupElement {
outline: none;
background-color:#bf2a2a;
}
-.greenButton:active {
+.greenButton:active.popupElement {
position:relative;
top:1px;
}
-.dangerButton {
+.dangerButton.popupElement {
-moz-box-shadow:inset 0px 1px 0px 0px #cf866c;
-webkit-box-shadow:inset 0px 1px 0px 0px #cf866c;
box-shadow:inset 0px 1px 0px 0px #cf866c;
@@ -90,19 +129,19 @@ body {
text-decoration:none;
text-shadow:0px 1px 0px #854629;
}
-.dangerButton:hover {
+.dangerButton:hover.popupElement {
background-color:#bc3315;
}
-.dangerButton:focus {
+.dangerButton:focus.popupElement {
outline: none;
background-color:#bc3315;
}
-.dangerButton:active {
+.dangerButton:active.popupElement {
position:relative;
top:1px;
}
-.warningButton {
+.warningButton.popupElement {
-moz-box-shadow:inset 0px 1px 0px 0px #cfbd6c;
-webkit-box-shadow:inset 0px 1px 0px 0px #cfbd6c;
box-shadow:inset 0px 1px 0px 0px #cfbd6c;
@@ -119,19 +158,19 @@ body {
text-decoration:none;
text-shadow:0px 1px 0px #856829;
}
-.warningButton:hover {
+.warningButton:hover.popupElement {
background-color:#bc8215;
}
-.warningButton:focus {
+.warningButton:focus.popupElement {
outline: none;
background-color:#bc8215;
}
-.warningButton:active {
+.warningButton:active.popupElement {
position:relative;
top:1px;
}
-.smallButton {
+.smallButton.popupElement {
background-color:#f9902d;
-moz-border-radius:3px;
-webkit-border-radius:3px;
@@ -144,14 +183,14 @@ body {
padding:6px 10px;
text-decoration:none;
}
-.smallButton:hover {
+.smallButton:hover.popupElement {
background-color:#fa9806;
}
-.smallButton:focus {
+.smallButton:focus.popupElement {
outline: none;
background-color:#fa9806;
}
-.smallButton:active {
+.smallButton:active.popupElement {
position:relative;
top:1px;
-}
+} \ No newline at end of file
diff --git a/popup.html b/popup.html
index db0a1cdb..acdd455c 100644
--- a/popup.html
+++ b/popup.html
@@ -1,182 +1,184 @@
<html>
<head>
<title>Set Page Color Popup</title>
- <link rel="stylesheet" type="text/css" href="/libs/Source+Sans+Pro.css"/>
- <link rel="stylesheet" type="text/css" href="popup.css"/>
+ <link id="sponorBlockPopupFont" rel="stylesheet" type="text/css" href="/libs/Source+Sans+Pro.css"/>
+ <link id="sponorBlockStyleSheet" rel="stylesheet" type="text/css" href="popup.css"/>
</head>
- <center>
- <div id="app">
- <img src="icons/LogoSponsorBlocker256px.png" height="64px"/>
+ <body class="popupBody">
+ <center>
+ <div id="app" class="popupBody">
+ <img src="icons/LogoSponsorBlocker256px.png" height="64px" id="sponsorBlockPopupLogo"/>
- <h1>SponsorBlock</h1>
+ <h1 class="popupElement">SponsorBlock</h1>
- <!-- Loading text -->
- <p id="loadingIndicator">Loading...</p>
+ <!-- Loading text -->
+ <p id="loadingIndicator" class="popupElement">Loading...</p>
- <!-- Hidden until loading complete -->
- <div id="mainControls" class="main" style="display: none">
- <!-- If the video was found in the database -->
- <div id="videoFound">
-
- </div>
-
- <div id="downloadedSponsorMessageTimes">
-
- </div>
-
- <br/>
-
- <button id="reportAnIssue" class="dangerButton">Vote On A Sponsor Time</button>
-
- <div id="issueReporterContainer" style="display: none">
-
- <h3 style="margin-top: 0px">Vote On A Sponsor Time</h3>
+ <!-- Hidden until loading complete -->
+ <div id="mainControls" class="main popupElement" style="display: none">
+ <!-- If the video was found in the database -->
+ <div id="videoFound">
+
+ </div>
- <div id="issueReporterTimeButtons">
+ <div id="downloadedSponsorMessageTimes" class="popupElement">
</div>
- </div>
+ <br/>
- <h2 class="recordingSubtitle">Record the times of a sponsorship</h2>
-
- <p>
- <span id=sponsorTimesContributionsContainer style="display: none">
- So far, you've submitted
- <span id="sponsorTimesContributionsDisplay">
- 0
- </span>
- <span id="sponsorTimesContributionsDisplayEndWord">
- sponsors.
- </span>
- </span>
-
- <span id=sponsorTimesViewsContainer style="display: none">
- You have saved people from
- <span id="sponsorTimesViewsDisplay">
- 0
- </span>
- <span id="sponsorTimesViewsDisplayEndWord">
- sponsor segments.
- </span>
- </span>
- </p>
-
- <p>
- Click the button below when the sponsorship starts and ends to record and
- submit it to the database.
- </p>
-
- <div>
- <button id="sponsorStart" class="greenButton">Sponsorship Starts Now</button>
- </div>
+ <button id="reportAnIssue" class="dangerButton popupElement">Vote On A Sponsor Time</button>
- <sub>Hint: Press the semicolon key while focused on a video report the start/end of a sponsor and quote to submit.</sub>
-
- <div id="submissionSection" style="display: none">
- <h3>Latest Sponsor Message Times Chosen</h3>
- <b>
- <div id="sponsorMessageTimes">
-
- </div>
- </b>
-
- <button id="clearTimes" class="smallButton">Clear Times</button>
-
- <br/>
- <br/>
+ <div id="issueReporterContainer" class="popupElement" style="display: none">
- <div id="submitTimesContainer" style="display: none">
- <button id="submitTimes" class="smallButton">Submit Times</button>
+ <h3 style="margin-top: 0px" class="popupElement">Vote On A Sponsor Time</h3>
- <div id="submitTimesInfoMessageContainer" style="display: none">
- <h3 id="submitTimesInfoMessage">
+ <div id="issueReporterTimeButtons" class="popupElement">
- </h3>
</div>
</div>
-
- </div>
- <div id="discordButtonContainer" style="display: none">
- <br/>
+ <h2 class="recordingSubtitle popupElement">Record the times of a sponsorship</h2>
+
+ <p class="popupElement">
+ <span id=sponsorTimesContributionsContainer class="popupElement" style="display: none">
+ So far, you've submitted
+ <span id="sponsorTimesContributionsDisplay" class="popupElement">
+ 0
+ </span>
+ <span id="sponsorTimesContributionsDisplayEndWord" class="popupElement">
+ sponsors.
+ </span>
+ </span>
+
+ <span id=sponsorTimesViewsContainer class="popupElement" style="display: none">
+ You have saved people from
+ <span id="sponsorTimesViewsDisplay" class="popupElement">
+ 0
+ </span>
+ <span id="sponsorTimesViewsDisplayEndWord" class="popupElement">
+ sponsor segments.
+ </span>
+ </span>
+ </p>
+
+ <p class="popupElement">
+ Click the button below when the sponsorship starts and ends to record and
+ submit it to the database.
+ </p>
+
+ <div>
+ <button id="sponsorStart" class="greenButton popupElement">Sponsorship Starts Now</button>
+ </div>
- <a href="https://discord.gg/QnmVMpU" target="_blank"><img src="https://www.logolynx.com/images/logolynx/1b/1bcc0f0aefe71b2c8ce66ffe8645d365.png" height="32px"/></a>
+ <sub class="popupElement">Hint: Press the semicolon key while focused on a video report the start/end of a sponsor and quote to submit.</sub>
+
+ <div id="submissionSection" class="popupElement" style="display: none">
+ <h3 class="popupElement">Latest Sponsor Message Times Chosen</h3>
+ <b>
+ <div id="sponsorMessageTimes" class="popupElement">
+
+ </div>
+ </b>
+
+ <button id="clearTimes" class="smallButton popupElement">Clear Times</button>
+
+ <br/>
+ <br/>
- <br/>
+ <div id="submitTimesContainer" class="popupElement" style="display: none">
+ <button id="submitTimes" class="smallButton popupElement">Submit Times</button>
- Come join the official discord server to give suggestions and feedback!
+ <div id="submitTimesInfoMessageContainer" class="popupElement" style="display: none">
+ <h3 id="submitTimesInfoMessage" class="popupElement">
- <br/>
+ </h3>
+ </div>
- <span id="hideDiscordButton" class="smallLink">Hide this</span>
- </div>
+ </div>
+
+ </div>
- <div id="optionsButtonContainer">
- <br/>
+ <div id="discordButtonContainer" class="popupElement" style="display: none">
<br/>
-
- <button id="optionsButton" class="dangerButton">Options</button>
- </div>
- <div id="options" style="display: none">
- <br/>
+ <a href="https://discord.gg/QnmVMpU" class="popupElement" target="_blank"><img src="https://www.logolynx.com/images/logolynx/1b/1bcc0f0aefe71b2c8ce66ffe8645d365.png" height="32px"/></a>
- <h3>Options</h3>
-
- <button id="hideVideoPlayerControls" class="warningButton">Hide Buttons On YouTube Player</button>
- <button id="showVideoPlayerControls" style="display: none" class="warningButton">Show Buttons On YouTube Player</button>
<br/>
- <sub>
- This hides the buttons that appear on the YouTube player to submit sponsors. I can see this being annoying for some
- people. Instead of using the button there, this popup can be used to submit sponsors. To hide the notice that appears,
- use the button that appears on the notice saying "Don't show this again". You can always enable these settings again
- later.
- </sub>
- <br/>
- <br/>
+ Come join the official discord server to give suggestions and feedback!
- <button id="hideInfoButtonPlayerControls" class="warningButton">Hide Info Button On YouTube Player</button>
- <button id="showInfoButtonPlayerControls" style="display: none" class="warningButton">Show Info Button On YouTube Player</button>
<br/>
- <sub>
- This is the button that opens up a popup in the YouTube page.
- </sub>
- <br/>
- <br/>
+ <span id="hideDiscordButton" class="smallLink popupElement">Hide this</span>
+ </div>
- <button id="hideDeleteButtonPlayerControls" class="warningButton">Hide Delete Button On YouTube Player</button>
- <button id="showDeleteButtonPlayerControls" style="display: none" class="warningButton">Show Delete Button On YouTube Player</button>
- <br/>
- <sub>
- This is the button that allows you to clear all sponsors on the YouTube player.
- </sub>
+ <div id="optionsButtonContainer" class="popupElement">
+ <br/>
+ <br/>
+
+ <button id="optionsButton" class="dangerButton popupElement">Options</button>
+ </div>
- <br/>
- <br/>
+ <div id="options" class="popupElement" style="display: none">
+ <br/>
- <button id="disableSponsorViewTracking" class="warningButton">Disable Sponsor View Tracking</button>
- <button id="enableSponsorViewTracking" style="display: none" class="warningButton">Enable Sponsor View Tracking</button>
- <br/>
- <sub>
- This feature tracks which sponsors you have skipped to let users know how much their submission has helped others and
- used as a metric along with upvotes to ensure that spam doesn't get into the database. The extension sends a message
- to the server each time you skip a sponsor. Hopefully most people don't change this setting so that the view numbers
- are accurate. :)
- </sub>
-
- <br/>
- <br/>
+ <h3>Options</h3>
+
+ <button id="hideVideoPlayerControls" class="warningButton popupElement">Hide Buttons On YouTube Player</button>
+ <button id="showVideoPlayerControls" style="display: none" class="warningButton popupElement">Show Buttons On YouTube Player</button>
+ <br/>
+ <sub class="popupElement">
+ This hides the buttons that appear on the YouTube player to submit sponsors. I can see this being annoying for some
+ people. Instead of using the button there, this popup can be used to submit sponsors. To hide the notice that appears,
+ use the button that appears on the notice saying "Don't show this again". You can always enable these settings again
+ later.
+ </sub>
+
+ <br/>
+ <br/>
+
+ <button id="hideInfoButtonPlayerControls" class="warningButton popupElement">Hide Info Button On YouTube Player</button>
+ <button id="showInfoButtonPlayerControls" style="display: none" class="warningButton popupElement">Show Info Button On YouTube Player</button>
+ <br/>
+ <sub class="popupElement">
+ This is the button that opens up a popup in the YouTube page.
+ </sub>
+
+ <br/>
+ <br/>
+
+ <button id="hideDeleteButtonPlayerControls" class="warningButton popupElement">Hide Delete Button On YouTube Player</button>
+ <button id="showDeleteButtonPlayerControls" style="display: none" class="warningButton popupElement">Show Delete Button On YouTube Player</button>
+ <br/>
+ <sub class="popupElement">
+ This is the button that allows you to clear all sponsors on the YouTube player.
+ </sub>
+
+ <br/>
+ <br/>
+
+ <button id="disableSponsorViewTracking" class="warningButton popupElement">Disable Sponsor View Tracking</button>
+ <button id="enableSponsorViewTracking" style="display: none" class="warningButton popupElement">Enable Sponsor View Tracking</button>
+ <br/>
+ <sub class="popupElement">
+ This feature tracks which sponsors you have skipped to let users know how much their submission has helped others and
+ used as a metric along with upvotes to ensure that spam doesn't get into the database. The extension sends a message
+ to the server each time you skip a sponsor. Hopefully most people don't change this setting so that the view numbers
+ are accurate. :)
+ </sub>
+
+ <br/>
+ <br/>
- <button id="showNoticeAgain" style="display: none" class="dangerButton">Show Notice Again</button>
+ <button id="showNoticeAgain" style="display: none" class="dangerButton popupElement">Show Notice Again</button>
+ </div>
</div>
</div>
- </div>
- </center>
+ </center>
+ </body>
<!-- Scripts that need to load after the html -->
<script src="config.js"></script>
diff --git a/popup.js b/popup.js
index 71aa4e87..95482305 100644
--- a/popup.js
+++ b/popup.js
@@ -1,927 +1,963 @@
-// References
-var SB = {};
-
-SB.sponsorStart = document.getElementById("sponsorStart");
-SB.clearTimes = document.getElementById("clearTimes");
-SB.submitTimes = document.getElementById("submitTimes");
-SB.showNoticeAgain = document.getElementById("showNoticeAgain");
-SB.hideVideoPlayerControls = document.getElementById("hideVideoPlayerControls");
-SB.showVideoPlayerControls = document.getElementById("showVideoPlayerControls");
-SB.hideInfoButtonPlayerControls = document.getElementById("hideInfoButtonPlayerControls");
-SB.showInfoButtonPlayerControls = document.getElementById("showInfoButtonPlayerControls");
-SB.hideDeleteButtonPlayerControls = document.getElementById("hideDeleteButtonPlayerControls");
-SB.showDeleteButtonPlayerControls = document.getElementById("showDeleteButtonPlayerControls");
-SB.disableSponsorViewTracking = document.getElementById("disableSponsorViewTracking");
-SB.enableSponsorViewTracking = document.getElementById("enableSponsorViewTracking");
-SB.optionsButton = document.getElementById("optionsButton");
-SB.reportAnIssue = document.getElementById("reportAnIssue");
-// sponsorTimesContributions
-SB.sponsorTimesContributionsContainer = document.getElementById("sponsorTimesContributionsContainer");
-SB.sponsorTimesContributionsDisplay = document.getElementById("sponsorTimesContributionsDisplay");
-SB.sponsorTimesContributionsDisplayEndWord = document.getElementById("sponsorTimesContributionsDisplayEndWord");
-// sponsorTimesViewsDisplay
-SB.sponsorTimesViewsContainer = document.getElementById("sponsorTimesViewsDisplayContainer");
-SB.sponsorTimesViewsDisplay = document.getElementById("sponsorTimesViewsDisplayDisplay");
-SB.sponsorTimesViewsDisplayEndWord = document.getElementById("sponsorTimesViewsDisplayDisplayEndWord");
-// discordButtons
-SB.discordButtonContainer = document.getElementById("discordButtonContainer");
-SB.hideDiscordButton = document.getElementById("hideDiscordButton");
-
-//setup click listeners
-SB.sponsorStart.addEventListener("click", sendSponsorStartMessage);
-SB.clearTimes.addEventListener("click", clearTimes);
-SB.submitTimes.addEventListener("click", submitTimes);
-SB.showNoticeAgain.addEventListener("click", showNoticeAgain);
-SB.hideVideoPlayerControls.addEventListener("click", hideVideoPlayerControls);
-SB.showVideoPlayerControls.addEventListener("click", showVideoPlayerControls);
-SB.hideInfoButtonPlayerControls.addEventListener("click", hideInfoButtonPlayerControls);
-SB.showInfoButtonPlayerControls.addEventListener("click", showInfoButtonPlayerControls);
-SB.hideDeleteButtonPlayerControls.addEventListener("click", hideDeleteButtonPlayerControls);
-SB.showDeleteButtonPlayerControls.addEventListener("click", showDeleteButtonPlayerControls);
-SB.disableSponsorViewTracking.addEventListener("click", disableSponsorViewTracking);
-SB.enableSponsorViewTracking.addEventListener("click", enableSponsorViewTracking);
-SB.optionsButton.addEventListener("click", openOptions);
-SB.reportAnIssue.addEventListener("click", reportAnIssue);
-SB.hideDiscordButton.addEventListener("click", hideDiscordButton);
-
-
-//if true, the button now selects the end time
-var startTimeChosen = false;
-
-//the start and end time pairs (2d)
-var sponsorTimes = [];
-
-//current video ID of this tab
-var currentVideoID = null;
-
-//is this a YouTube tab?
-var isYouTubeTab = false;
-
-//see if discord link can be shown
-chrome.storage.sync.get(["hideDiscordLink"], function(result) {
- let hideDiscordLink = result.hideDiscordLink;
- if (hideDiscordLink == undefined || !hideDiscordLink) {
- chrome.storage.sync.get(["hideDiscordLaunches"], function(result) {
- let hideDiscordLaunches = result.hideDiscordLaunches;
- //only if less than 5 launches
- if (hideDiscordLaunches == undefined || hideDiscordLaunches < 10) {
- SB.discordButtonContainer.style.display = null;
-
- if (hideDiscordLaunches == undefined) {
- hideDiscordButton = 1;
- }
-
- chrome.storage.sync.set({"hideDiscordLaunches": hideDiscordButton + 1});
+//make this a function to allow this to run on the content page
+function runThePopup() {
+
+ //is it in the popup or content script
+ var inPopup = true;
+ if (chrome.tabs == undefined) {
+ //this is on the content script, use direct communication
+ chrome.tabs = {};
+ chrome.tabs.sendMessage = function(id, request, callback) {
+ messageListener(request, null, callback);
}
- });
- }
-});
-
-//if the don't show notice again variable is true, an option to
-// disable should be available
-chrome.storage.sync.get(["dontShowNoticeAgain"], function(result) {
- let dontShowNoticeAgain = result.dontShowNoticeAgain;
- if (dontShowNoticeAgain != undefined && dontShowNoticeAgain) {
- SB.showNoticeAgain.style.display = "unset";
- }
-});
-
-//show proper video player controls options
-chrome.storage.sync.get(["hideVideoPlayerControls"], function(result) {
- let hideVideoPlayerControls = result.hideVideoPlayerControls;
- if (hideVideoPlayerControls != undefined && hideVideoPlayerControls) {
- SB.hideVideoPlayerControls.style.display = "none";
- SB.showVideoPlayerControls.style.display = "unset";
- }
-});
-chrome.storage.sync.get(["hideInfoButtonPlayerControls"], function(result) {
- let hideInfoButtonPlayerControls = result.hideInfoButtonPlayerControls;
- if (hideInfoButtonPlayerControls != undefined && hideInfoButtonPlayerControls) {
- SB.hideInfoButtonPlayerControls.style.display = "none";
- SB.showInfoButtonPlayerControls.style.display = "unset";
- }
-});
-chrome.storage.sync.get(["hideDeleteButtonPlayerControls"], function(result) {
- let hideDeleteButtonPlayerControls = result.hideDeleteButtonPlayerControls;
- if (hideDeleteButtonPlayerControls != undefined && hideDeleteButtonPlayerControls) {
- SB.hideDeleteButtonPlayerControls.style.display = "none";
- SB.showDeleteButtonPlayerControls.style.display = "unset";
- }
-});
-
-//show proper tracking option
-chrome.storage.sync.get(["trackViewCount"], function(result) {
- let trackViewCount = result.trackViewCount;
- if (trackViewCount != undefined && !trackViewCount) {
- SB.disableSponsorViewTracking.style.display = "none";
- SB.enableSponsorViewTracking.style.display = "unset";
+
+ //add a dummy query method
+ chrome.tabs.query = function(config, callback) {
+ callback([{
+ url: document.URL,
+ id: -1
+ }]);
+ }
+
+ inPopup = false;
}
-});
-
-//get the amount of times this user has contributed and display it to thank them
-chrome.storage.sync.get(["sponsorTimesContributed"], function(result) {
- if (result.sponsorTimesContributed != undefined) {
- if (result.sponsorTimesContributed > 1) {
- SB.sponsorTimesContributionsDisplayEndWord.innerText = "sponsors."
- } else {
- SB.sponsorTimesContributionsDisplayEndWord.innerText = "sponsor."
+
+ // References
+ let SB = {};
+
+ SB.sponsorStart = document.getElementById("sponsorStart");
+ SB.clearTimes = document.getElementById("clearTimes");
+ SB.submitTimes = document.getElementById("submitTimes");
+ SB.showNoticeAgain = document.getElementById("showNoticeAgain");
+ SB.hideVideoPlayerControls = document.getElementById("hideVideoPlayerControls");
+ SB.showVideoPlayerControls = document.getElementById("showVideoPlayerControls");
+ SB.hideInfoButtonPlayerControls = document.getElementById("hideInfoButtonPlayerControls");
+ SB.showInfoButtonPlayerControls = document.getElementById("showInfoButtonPlayerControls");
+ SB.hideDeleteButtonPlayerControls = document.getElementById("hideDeleteButtonPlayerControls");
+ SB.showDeleteButtonPlayerControls = document.getElementById("showDeleteButtonPlayerControls");
+ SB.disableSponsorViewTracking = document.getElementById("disableSponsorViewTracking");
+ SB.enableSponsorViewTracking = document.getElementById("enableSponsorViewTracking");
+ SB.optionsButton = document.getElementById("optionsButton");
+ SB.reportAnIssue = document.getElementById("reportAnIssue");
+ // sponsorTimesContributions
+ SB.sponsorTimesContributionsContainer = document.getElementById("sponsorTimesContributionsContainer");
+ SB.sponsorTimesContributionsDisplay = document.getElementById("sponsorTimesContributionsDisplay");
+ SB.sponsorTimesContributionsDisplayEndWord = document.getElementById("sponsorTimesContributionsDisplayEndWord");
+ // sponsorTimesViewsDisplay
+ SB.sponsorTimesViewsContainer = document.getElementById("sponsorTimesViewsDisplayContainer");
+ SB.sponsorTimesViewsDisplay = document.getElementById("sponsorTimesViewsDisplayDisplay");
+ SB.sponsorTimesViewsDisplayEndWord = document.getElementById("sponsorTimesViewsDisplayDisplayEndWord");
+ // discordButtons
+ SB.discordButtonContainer = document.getElementById("discordButtonContainer");
+ SB.hideDiscordButton = document.getElementById("hideDiscordButton");
+
+ //setup click listeners
+ SB.sponsorStart.addEventListener("click", sendSponsorStartMessage);
+ SB.clearTimes.addEventListener("click", clearTimes);
+ SB.submitTimes.addEventListener("click", submitTimes);
+ SB.showNoticeAgain.addEventListener("click", showNoticeAgain);
+ SB.hideVideoPlayerControls.addEventListener("click", hideVideoPlayerControls);
+ SB.showVideoPlayerControls.addEventListener("click", showVideoPlayerControls);
+ SB.hideInfoButtonPlayerControls.addEventListener("click", hideInfoButtonPlayerControls);
+ SB.showInfoButtonPlayerControls.addEventListener("click", showInfoButtonPlayerControls);
+ SB.hideDeleteButtonPlayerControls.addEventListener("click", hideDeleteButtonPlayerControls);
+ SB.showDeleteButtonPlayerControls.addEventListener("click", showDeleteButtonPlayerControls);
+ SB.disableSponsorViewTracking.addEventListener("click", disableSponsorViewTracking);
+ SB.enableSponsorViewTracking.addEventListener("click", enableSponsorViewTracking);
+ SB.optionsButton.addEventListener("click", openOptions);
+ SB.reportAnIssue.addEventListener("click", reportAnIssue);
+ SB.hideDiscordButton.addEventListener("click", hideDiscordButton);
+
+
+ //if true, the button now selects the end time
+ let startTimeChosen = false;
+
+ //the start and end time pairs (2d)
+ let sponsorTimes = [];
+
+ //current video ID of this tab
+ let currentVideoID = null;
+
+ //is this a YouTube tab?
+ let isYouTubeTab = false;
+
+ //see if discord link can be shown
+ chrome.storage.sync.get(["hideDiscordLink"], function(result) {
+ let hideDiscordLink = result.hideDiscordLink;
+ if (hideDiscordLink == undefined || !hideDiscordLink) {
+ chrome.storage.sync.get(["hideDiscordLaunches"], function(result) {
+ let hideDiscordLaunches = result.hideDiscordLaunches;
+ //only if less than 5 launches
+ if (hideDiscordLaunches == undefined || hideDiscordLaunches < 10) {
+ SB.discordButtonContainer.style.display = null;
+
+ if (hideDiscordLaunches == undefined) {
+ hideDiscordButton = 1;
+ }
+
+ chrome.storage.sync.set({"hideDiscordLaunches": hideDiscordButton + 1});
+ }
+ });
}
- SB.sponsorTimesContributionsDisplay.innerText = result.sponsorTimesContributed;
- SB.sponsorTimesContributionsContainer.style.display = "unset";
-
- //get the userID
- chrome.storage.sync.get(["userID"], function(result) {
- let userID = result.userID;
- if (userID != undefined) {
- //there are probably some views on these submissions then
- //get the amount of views from the sponsors submitted
- sendRequestToServer("GET", "/api/getViewsForUser?userID=" + userID, function(xmlhttp) {
- if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
- let viewCount = JSON.parse(xmlhttp.responseText).viewCount;
- if (viewCount != 0) {
- if (viewCount > 1) {
- SB.sponsorTimesViewsDisplayEndWord.innerText = "sponsor segments."
- } else {
- SB.sponsorTimesViewsDisplayEndWord.innerText = "sponsor segment."
+ });
+
+ //if the don't show notice again letiable is true, an option to
+ // disable should be available
+ chrome.storage.sync.get(["dontShowNoticeAgain"], function(result) {
+ let dontShowNoticeAgain = result.dontShowNoticeAgain;
+ if (dontShowNoticeAgain != undefined && dontShowNoticeAgain) {
+ SB.showNoticeAgain.style.display = "unset";
+ }
+ });
+
+ //show proper video player controls options
+ chrome.storage.sync.get(["hideVideoPlayerControls"], function(result) {
+ let hideVideoPlayerControls = result.hideVideoPlayerControls;
+ if (hideVideoPlayerControls != undefined && hideVideoPlayerControls) {
+ SB.hideVideoPlayerControls.style.display = "none";
+ SB.showVideoPlayerControls.style.display = "unset";
+ }
+ });
+ chrome.storage.sync.get(["hideInfoButtonPlayerControls"], function(result) {
+ let hideInfoButtonPlayerControls = result.hideInfoButtonPlayerControls;
+ if (hideInfoButtonPlayerControls != undefined && hideInfoButtonPlayerControls) {
+ SB.hideInfoButtonPlayerControls.style.display = "none";
+ SB.showInfoButtonPlayerControls.style.display = "unset";
+ }
+ });
+ chrome.storage.sync.get(["hideDeleteButtonPlayerControls"], function(result) {
+ let hideDeleteButtonPlayerControls = result.hideDeleteButtonPlayerControls;
+ if (hideDeleteButtonPlayerControls != undefined && hideDeleteButtonPlayerControls) {
+ SB.hideDeleteButtonPlayerControls.style.display = "none";
+ SB.showDeleteButtonPlayerControls.style.display = "unset";
+ }
+ });
+
+ //show proper tracking option
+ chrome.storage.sync.get(["trackViewCount"], function(result) {
+ let trackViewCount = result.trackViewCount;
+ if (trackViewCount != undefined && !trackViewCount) {
+ SB.disableSponsorViewTracking.style.display = "none";
+ SB.enableSponsorViewTracking.style.display = "unset";
+ }
+ });
+
+ //get the amount of times this user has contributed and display it to thank them
+ chrome.storage.sync.get(["sponsorTimesContributed"], function(result) {
+ if (result.sponsorTimesContributed != undefined) {
+ if (result.sponsorTimesContributed > 1) {
+ SB.sponsorTimesContributionsDisplayEndWord.innerText = "sponsors."
+ } else {
+ SB.sponsorTimesContributionsDisplayEndWord.innerText = "sponsor."
+ }
+ SB.sponsorTimesContributionsDisplay.innerText = result.sponsorTimesContributed;
+ SB.sponsorTimesContributionsContainer.style.display = "unset";
+
+ //get the userID
+ chrome.storage.sync.get(["userID"], function(result) {
+ let userID = result.userID;
+ if (userID != undefined) {
+ //there are probably some views on these submissions then
+ //get the amount of views from the sponsors submitted
+ sendRequestToServer("GET", "/api/getViewsForUser?userID=" + userID, function(xmlhttp) {
+ if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
+ let viewCount = JSON.parse(xmlhttp.responseText).viewCount;
+ if (viewCount != 0) {
+ if (viewCount > 1) {
+ SB.sponsorTimesViewsDisplayEndWord.innerText = "sponsor segments."
+ } else {
+ SB.sponsorTimesViewsDisplayEndWord.innerText = "sponsor segment."
+ }
+ SB.sponsorTimesViewsDisplay.innerText = viewCount;
+ SB.sponsorTimesViewsContainer.style.display = "unset";
}
- SB.sponsorTimesViewsDisplay.innerText = viewCount;
- SB.sponsorTimesViewsContainer.style.display = "unset";
}
- }
- });
+ });
+ }
+ });
+ }
+ });
+
+
+ chrome.tabs.query({
+ active: true,
+ currentWindow: true
+ }, loadTabData);
+
+
+ function loadTabData(tabs) {
+ //set current videoID
+ currentVideoID = getYouTubeVideoID(tabs[0].url);
+
+ if (!currentVideoID) {
+ //this isn't a YouTube video then
+ displayNoVideo();
+ return;
+ }
+
+ //load video times for this video
+ let sponsorTimeKey = "sponsorTimes" + currentVideoID;
+ chrome.storage.sync.get([sponsorTimeKey], function(result) {
+ let sponsorTimesStorage = result[sponsorTimeKey];
+ if (sponsorTimesStorage != undefined && sponsorTimesStorage.length > 0) {
+ if (sponsorTimesStorage[sponsorTimesStorage.length - 1] != undefined && sponsorTimesStorage[sponsorTimesStorage.length - 1].length < 2) {
+ startTimeChosen = true;
+ SB.sponsorStart.innerHTML = "Sponsorship Ends Now";
+ }
+
+ sponsorTimes = sponsorTimesStorage;
+
+ displaySponsorTimes();
+
+ //show submission section
+ document.getElementById("submissionSection").style.display = "unset";
+
+ showSubmitTimesIfNecessary();
}
});
+
+ //check if this video's sponsors are known
+ chrome.tabs.sendMessage(
+ tabs[0].id,
+ {message: 'isInfoFound'},
+ infoFound
+ );
}
-});
-
-
-chrome.tabs.query({
- active: true,
- currentWindow: true
-}, loadTabData);
-
-function loadTabData(tabs) {
- //set current videoID
- currentVideoID = getYouTubeVideoID(tabs[0].url);
-
- if (!currentVideoID) {
- //this isn't a YouTube video then
- displayNoVideo();
- return;
- }
-
- //load video times for this video
- let sponsorTimeKey = "sponsorTimes" + currentVideoID;
- chrome.storage.sync.get([sponsorTimeKey], function(result) {
- let sponsorTimesStorage = result[sponsorTimeKey];
- if (sponsorTimesStorage != undefined && sponsorTimesStorage.length > 0) {
- if (sponsorTimesStorage[sponsorTimesStorage.length - 1] != undefined && sponsorTimesStorage[sponsorTimesStorage.length - 1].length < 2) {
- startTimeChosen = true;
- SB.sponsorStart.innerHTML = "Sponsorship Ends Now";
+
+ function infoFound(request) {
+ if(chrome.runtime.lastError) {
+ //This page doesn't have the injected content script, or at least not yet
+ displayNoVideo();
+ return;
+ }
+
+ //if request is undefined, then the page currently being browsed is not YouTube
+ if (request != undefined) {
+ //this must be a YouTube video
+ //set letiable
+ isYouTubeTab = true;
+
+ //remove loading text
+ document.getElementById("mainControls").style.display = "unset"
+ document.getElementById("loadingIndicator").innerHTML = "";
+
+ if (request.found) {
+ document.getElementById("videoFound").innerHTML = "This video's sponsors are in the database!"
+
+ displayDownloadedSponsorTimes(request);
+ } else {
+ document.getElementById("videoFound").innerHTML = "No sponsors found"
}
-
- sponsorTimes = sponsorTimesStorage;
-
- displaySponsorTimes();
-
- //show submission section
- document.getElementById("submissionSection").style.display = "unset";
-
- showSubmitTimesIfNecessary();
}
- });
-
- //check if this video's sponsors are known
- chrome.tabs.sendMessage(
- tabs[0].id,
- {message: 'isInfoFound'},
- infoFound
- );
-}
-
-function infoFound(request) {
- if(chrome.runtime.lastError) {
- //This page doesn't have the injected content script, or at least not yet
- displayNoVideo();
- return;
}
-
- //if request is undefined, then the page currently being browsed is not YouTube
- if (request != undefined) {
- //this must be a YouTube video
- //set variable
- isYouTubeTab = true;
-
- //remove loading text
- document.getElementById("mainControls").style.display = "unset"
- document.getElementById("loadingIndicator").innerHTML = "";
-
- if (request.found) {
- document.getElementById("videoFound").innerHTML = "This video's sponsors are in the database!"
-
- displayDownloadedSponsorTimes(request);
- } else {
- document.getElementById("videoFound").innerHTML = "No sponsors found"
+
+ function setVideoID(request) {
+ //if request is undefined, then the page currently being browsed is not YouTube
+ if (request != undefined) {
+ videoID = request.videoID;
}
}
-}
-
-function setVideoID(request) {
- //if request is undefined, then the page currently being browsed is not YouTube
- if (request != undefined) {
- videoID = request.videoID;
- }
-}
-
-function sendSponsorStartMessage() {
- //the content script will get the message if a YouTube page is open
- chrome.tabs.query({
- active: true,
- currentWindow: true
- }, tabs => {
- chrome.tabs.sendMessage(
- tabs[0].id,
- {from: 'popup', message: 'sponsorStart'},
- startSponsorCallback
- );
- });
-}
-
-function startSponsorCallback(response) {
- let sponsorTimesIndex = sponsorTimes.length - (startTimeChosen ? 1 : 0);
-
- if (sponsorTimes[sponsorTimesIndex] == undefined) {
- sponsorTimes[sponsorTimesIndex] = [];
+
+ function sendSponsorStartMessage() {
+ //the content script will get the message if a YouTube page is open
+ chrome.tabs.query({
+ active: true,
+ currentWindow: true
+ }, tabs => {
+ chrome.tabs.sendMessage(
+ tabs[0].id,
+ {from: 'popup', message: 'sponsorStart'},
+ startSponsorCallback
+ );
+ });
}
-
- sponsorTimes[sponsorTimesIndex][startTimeChosen ? 1 : 0] = response.time;
-
- let sponsorTimeKey = "sponsorTimes" + currentVideoID;
- chrome.storage.sync.set({[sponsorTimeKey]: sponsorTimes});
-
- updateStartTimeChosen();
-
- //display video times on screen
- displaySponsorTimes();
-
- //show submission section
- document.getElementById("submissionSection").style.display = "unset";
-
- showSubmitTimesIfNecessary();
-}
-
-//display the video times from the array
-function displaySponsorTimes() {
- //set it to the message
- let sponsorMessageTimes = document.getElementById("sponsorMessageTimes");
-
- //remove all children
- while (sponsorMessageTimes.firstChild) {
- sponsorMessageTimes.removeChild(sponsorMessageTimes.firstChild);
+
+ function startSponsorCallback(response) {
+ let sponsorTimesIndex = sponsorTimes.length - (startTimeChosen ? 1 : 0);
+
+ if (sponsorTimes[sponsorTimesIndex] == undefined) {
+ sponsorTimes[sponsorTimesIndex] = [];
+ }
+
+ sponsorTimes[sponsorTimesIndex][startTimeChosen ? 1 : 0] = response.time;
+
+ let sponsorTimeKey = "sponsorTimes" + currentVideoID;
+ chrome.storage.sync.set({[sponsorTimeKey]: sponsorTimes});
+
+ updateStartTimeChosen();
+
+ //display video times on screen
+ displaySponsorTimes();
+
+ //show submission section
+ document.getElementById("submissionSection").style.display = "unset";
+
+ showSubmitTimesIfNecessary();
}
-
- //add sponsor times
- sponsorMessageTimes.appendChild(getSponsorTimesMessageDiv(sponsorTimes));
-}
-
-//display the video times from the array at the top, in a different section
-function displayDownloadedSponsorTimes(request) {
- if (request.sponsorTimes != undefined) {
+
+ //display the video times from the array
+ function displaySponsorTimes() {
//set it to the message
- document.getElementById("downloadedSponsorMessageTimes").innerHTML = getSponsorTimesMessage(request.sponsorTimes);
-
- //add them as buttons to the issue reporting container
- let container = document.getElementById("issueReporterTimeButtons");
- for (let i = 0; i < request.sponsorTimes.length; i++) {
- let sponsorTimeButton = document.createElement("button");
- sponsorTimeButton.className = "warningButton";
- sponsorTimeButton.innerText = getFormattedTime(request.sponsorTimes[i][0]) + " to " + getFormattedTime(request.sponsorTimes[i][1]);
-
- let votingButtons = document.createElement("div");
-
- let UUID = request.UUIDs[i];
-
- //thumbs up and down buttons
- let voteButtonsContainer = document.createElement("div");
- voteButtonsContainer.id = "sponsorTimesVoteButtonsContainer" + UUID;
- voteButtonsContainer.setAttribute("align", "center");
- voteButtonsContainer.style.display = "none"
-
- let upvoteButton = document.createElement("img");
- upvoteButton.id = "sponsorTimesUpvoteButtonsContainer" + UUID;
- upvoteButton.className = "voteButton";
- upvoteButton.src = chrome.extension.getURL("icons/upvote.png");
- upvoteButton.addEventListener("click", () => vote(1, UUID));
-
- let downvoteButton = document.createElement("img");
- downvoteButton.id = "sponsorTimesDownvoteButtonsContainer" + UUID;
- downvoteButton.className = "voteButton";
- downvoteButton.src = chrome.extension.getURL("icons/downvote.png");
- downvoteButton.addEventListener("click", () => vote(0, UUID));
-
- //add thumbs up and down buttons to the container
- voteButtonsContainer.appendChild(document.createElement("br"));
- voteButtonsContainer.appendChild(document.createElement("br"));
- voteButtonsContainer.appendChild(upvoteButton);
- voteButtonsContainer.appendChild(downvoteButton);
-
- //add click listener to open up vote panel
- sponsorTimeButton.addEventListener("click", function() {
- voteButtonsContainer.style.display = "unset";
- });
-
- container.appendChild(sponsorTimeButton);
- container.appendChild(voteButtonsContainer);
-
- //if it is not the last iteration
- if (i != request.sponsorTimes.length - 1) {
- container.appendChild(document.createElement("br"));
- container.appendChild(document.createElement("br"));
+ let sponsorMessageTimes = document.getElementById("sponsorMessageTimes");
+
+ //remove all children
+ while (sponsorMessageTimes.firstChild) {
+ sponsorMessageTimes.removeChild(sponsorMessageTimes.firstChild);
+ }
+
+ //add sponsor times
+ sponsorMessageTimes.appendChild(getSponsorTimesMessageDiv(sponsorTimes));
+ }
+
+ //display the video times from the array at the top, in a different section
+ function displayDownloadedSponsorTimes(request) {
+ if (request.sponsorTimes != undefined) {
+ //set it to the message
+ document.getElementById("downloadedSponsorMessageTimes").innerHTML = getSponsorTimesMessage(request.sponsorTimes);
+
+ //add them as buttons to the issue reporting container
+ let container = document.getElementById("issueReporterTimeButtons");
+ for (let i = 0; i < request.sponsorTimes.length; i++) {
+ let sponsorTimeButton = document.createElement("button");
+ sponsorTimeButton.className = "warningButton popupElement";
+ sponsorTimeButton.innerText = getFormattedTime(request.sponsorTimes[i][0]) + " to " + getFormattedTime(request.sponsorTimes[i][1]);
+
+ let votingButtons = document.createElement("div");
+
+ let UUID = request.UUIDs[i];
+
+ //thumbs up and down buttons
+ let voteButtonsContainer = document.createElement("div");
+ voteButtonsContainer.id = "sponsorTimesVoteButtonsContainer" + UUID;
+ voteButtonsContainer.setAttribute("align", "center");
+ voteButtonsContainer.style.display = "none"
+
+ let upvoteButton = document.createElement("img");
+ upvoteButton.id = "sponsorTimesUpvoteButtonsContainer" + UUID;
+ upvoteButton.className = "voteButton popupElement";
+ upvoteButton.src = chrome.extension.getURL("icons/upvote.png");
+ upvoteButton.addEventListener("click", () => vote(1, UUID));
+
+ let downvoteButton = document.createElement("img");
+ downvoteButton.id = "sponsorTimesDownvoteButtonsContainer" + UUID;
+ downvoteButton.className = "voteButton popupElement";
+ downvoteButton.src = chrome.extension.getURL("icons/downvote.png");
+ downvoteButton.addEventListener("click", () => vote(0, UUID));
+
+ //add thumbs up and down buttons to the container
+ voteButtonsContainer.appendChild(document.createElement("br"));
+ voteButtonsContainer.appendChild(document.createElement("br"));
+ voteButtonsContainer.appendChild(upvoteButton);
+ voteButtonsContainer.appendChild(downvoteButton);
+
+ //add click listener to open up vote panel
+ sponsorTimeButton.addEventListener("click", function() {
+ voteButtonsContainer.style.display = "unset";
+ });
+
+ container.appendChild(sponsorTimeButton);
+ container.appendChild(voteButtonsContainer);
+
+ //if it is not the last iteration
+ if (i != request.sponsorTimes.length - 1) {
+ container.appendChild(document.createElement("br"));
+ container.appendChild(document.createElement("br"));
+ }
}
}
}
-}
-
-//get the message that visually displays the video times
-function getSponsorTimesMessage(sponsorTimes) {
- let sponsorTimesMessage = "";
-
- for (let i = 0; i < sponsorTimes.length; i++) {
- for (let s = 0; s < sponsorTimes[i].length; s++) {
- let timeMessage = getFormattedTime(sponsorTimes[i][s]);
- //if this is an end time
- if (s == 1) {
- timeMessage = " to " + timeMessage;
- } else if (i > 0) {
- //add commas if necessary
- timeMessage = ", " + timeMessage;
+
+ //get the message that visually displays the video times
+ function getSponsorTimesMessage(sponsorTimes) {
+ let sponsorTimesMessage = "";
+
+ for (let i = 0; i < sponsorTimes.length; i++) {
+ for (let s = 0; s < sponsorTimes[i].length; s++) {
+ let timeMessage = getFormattedTime(sponsorTimes[i][s]);
+ //if this is an end time
+ if (s == 1) {
+ timeMessage = " to " + timeMessage;
+ } else if (i > 0) {
+ //add commas if necessary
+ timeMessage = ", " + timeMessage;
+ }
+
+ sponsorTimesMessage += timeMessage;
}
-
- sponsorTimesMessage += timeMessage;
}
+
+ return sponsorTimesMessage;
}
-
- return sponsorTimesMessage;
-}
-
-//get the message that visually displays the video times
-//this version is a div that contains each with delete buttons
-function getSponsorTimesMessageDiv(sponsorTimes) {
- // let sponsorTimesMessage = "";
- let sponsorTimesContainer = document.createElement("div");
- sponsorTimesContainer.id = "sponsorTimesContainer";
-
- for (let i = 0; i < sponsorTimes.length; i++) {
- let currentSponsorTimeContainer = document.createElement("div");
- currentSponsorTimeContainer.id = "sponsorTimeContainer" + i;
- currentSponsorTimeContainer.className = "sponsorTime";
- let currentSponsorTimeMessage = "";
-
- let deleteButton = document.createElement("span");
- deleteButton.id = "sponsorTimeDeleteButton" + i;
- deleteButton.innerText = "Delete";
- deleteButton.className = "mediumLink";
- let index = i;
- deleteButton.addEventListener("click", () => deleteSponsorTime(index));
-
- let spacer = document.createElement("span");
- spacer.innerText = " ";
-
- let editButton = document.createElement("span");
- editButton.id = "sponsorTimeEditButton" + i;
- editButton.innerText = "Edit";
- editButton.className = "mediumLink";
- editButton.addEventListener("click", () => editSponsorTime(index));
-
- for (let s = 0; s < sponsorTimes[i].length; s++) {
- let timeMessage = getFormattedTime(sponsorTimes[i][s]);
- //if this is an end time
- if (s == 1) {
- timeMessage = " to " + timeMessage;
- } else if (i > 0) {
- //add commas if necessary
- timeMessage = timeMessage;
+
+ //get the message that visually displays the video times
+ //this version is a div that contains each with delete buttons
+ function getSponsorTimesMessageDiv(sponsorTimes) {
+ // let sponsorTimesMessage = "";
+ let sponsorTimesContainer = document.createElement("div");
+ sponsorTimesContainer.id = "sponsorTimesContainer";
+
+ for (let i = 0; i < sponsorTimes.length; i++) {
+ let currentSponsorTimeContainer = document.createElement("div");
+ currentSponsorTimeContainer.id = "sponsorTimeContainer" + i;
+ currentSponsorTimeContainer.className = "sponsorTime popupElement";
+ let currentSponsorTimeMessage = "";
+
+ let deleteButton = document.createElement("span");
+ deleteButton.id = "sponsorTimeDeleteButton" + i;
+ deleteButton.innerText = "Delete";
+ deleteButton.className = "mediumLink popupElement";
+ let index = i;
+ deleteButton.addEventListener("click", () => deleteSponsorTime(index));
+
+ let spacer = document.createElement("span");
+ spacer.innerText = " ";
+
+ let editButton = document.createElement("span");
+ editButton.id = "sponsorTimeEditButton" + i;
+ editButton.innerText = "Edit";
+ editButton.className = "mediumLink popupElement";
+ editButton.addEventListener("click", () => editSponsorTime(index));
+
+ for (let s = 0; s < sponsorTimes[i].length; s++) {
+ let timeMessage = getFormattedTime(sponsorTimes[i][s]);
+ //if this is an end time
+ if (s == 1) {
+ timeMessage = " to " + timeMessage;
+ } else if (i > 0) {
+ //add commas if necessary
+ timeMessage = timeMessage;
+ }
+
+ currentSponsorTimeMessage += timeMessage;
+ }
+
+ currentSponsorTimeContainer.innerText = currentSponsorTimeMessage;
+ currentSponsorTimeContainer.addEventListener("click", () => editSponsorTime(index));
+
+ sponsorTimesContainer.appendChild(currentSponsorTimeContainer);
+ sponsorTimesContainer.appendChild(deleteButton);
+
+ //only if it is a complete sponsor time
+ if (sponsorTimes[i].length > 1) {
+ sponsorTimesContainer.appendChild(editButton);
}
-
- currentSponsorTimeMessage += timeMessage;
}
-
- currentSponsorTimeContainer.innerText = currentSponsorTimeMessage;
- currentSponsorTimeContainer.addEventListener("click", () => editSponsorTime(index));
-
- sponsorTimesContainer.appendChild(currentSponsorTimeContainer);
- sponsorTimesContainer.appendChild(deleteButton);
-
- //only if it is a complete sponsor time
- if (sponsorTimes[i].length > 1) {
- sponsorTimesContainer.appendChild(editButton);
+
+ return sponsorTimesContainer;
+ }
+
+ function editSponsorTime(index) {
+ if (document.getElementById("startTimeMinutes" + index) != null) {
+ //already open
+ return;
}
+
+ let sponsorTimeContainer = document.getElementById("sponsorTimeContainer" + index);
+
+ //get sponsor time minutes and seconds boxes
+ let startTimeMinutes = document.createElement("input");
+ startTimeMinutes.id = "startTimeMinutes" + index;
+ startTimeMinutes.className = "sponsorTime popupElement";
+ startTimeMinutes.type = "text";
+ startTimeMinutes.value = getTimeInMinutes(sponsorTimes[index][0]);
+ startTimeMinutes.style.width = "45px";
+
+ let startTimeSeconds = document.createElement("input");
+ startTimeSeconds.id = "startTimeSeconds" + index;
+ startTimeSeconds.className = "sponsorTime popupElement";
+ startTimeSeconds.type = "text";
+ startTimeSeconds.value = getTimeInFormattedSeconds(sponsorTimes[index][0]);
+ startTimeSeconds.style.width = "60px";
+
+ let endTimeMinutes = document.createElement("input");
+ endTimeMinutes.id = "endTimeMinutes" + index;
+ endTimeMinutes.className = "sponsorTime popupElement";
+ endTimeMinutes.type = "text";
+ endTimeMinutes.value = getTimeInMinutes(sponsorTimes[index][1]);
+ endTimeMinutes.style.width = "45px";
+
+ let endTimeSeconds = document.createElement("input");
+ endTimeSeconds.id = "endTimeSeconds" + index;
+ endTimeSeconds.className = "sponsorTime popupElement";
+ endTimeSeconds.type = "text";
+ endTimeSeconds.value = getTimeInFormattedSeconds(sponsorTimes[index][1]);
+ endTimeSeconds.style.width = "60px";
+
+ let colonText = document.createElement("span");
+ colonText.innerText = ":";
+
+ let toText = document.createElement("span");
+ toText.innerText = " to ";
+
+ //remove all children to replace
+ while (sponsorTimeContainer.firstChild) {
+ sponsorTimeContainer.removeChild(sponsorTimeContainer.firstChild);
+ }
+
+ sponsorTimeContainer.appendChild(startTimeMinutes);
+ sponsorTimeContainer.appendChild(colonText);
+ sponsorTimeContainer.appendChild(startTimeSeconds);
+ sponsorTimeContainer.appendChild(toText);
+ sponsorTimeContainer.appendChild(endTimeMinutes);
+ sponsorTimeContainer.appendChild(colonText);
+ sponsorTimeContainer.appendChild(endTimeSeconds);
+
+ //add save button and remove edit button
+ let saveButton = document.createElement("span");
+ saveButton.id = "sponsorTimeSaveButton" + index;
+ saveButton.innerText = "Save";
+ saveButton.className = "mediumLink popupElement";
+ saveButton.addEventListener("click", () => saveSponsorTimeEdit(index));
+
+ let editButton = document.getElementById("sponsorTimeEditButton" + index);
+ let sponsorTimesContainer = document.getElementById("sponsorTimesContainer");
+
+ editButton.remove();
+ sponsorTimesContainer.appendChild(saveButton);
}
-
- return sponsorTimesContainer;
-}
-
-function editSponsorTime(index) {
- if (document.getElementById("startTimeMinutes" + index) != null) {
- //already open
- return;
+
+ function saveSponsorTimeEdit(index) {
+ let startTimeMinutes = document.getElementById("startTimeMinutes" + index);
+ let startTimeSeconds = document.getElementById("startTimeSeconds" + index);
+
+ let endTimeMinutes = document.getElementById("endTimeMinutes" + index);
+ let endTimeSeconds = document.getElementById("endTimeSeconds" + index);
+
+ sponsorTimes[index][0] = parseInt(startTimeMinutes.value) * 60 + parseFloat(startTimeSeconds.value);
+ sponsorTimes[index][1] = parseInt(endTimeMinutes.value) * 60 + parseFloat(endTimeSeconds.value);
+
+ //save this
+ let sponsorTimeKey = "sponsorTimes" + currentVideoID;
+ chrome.storage.sync.set({[sponsorTimeKey]: sponsorTimes});
+
+ displaySponsorTimes();
}
-
- let sponsorTimeContainer = document.getElementById("sponsorTimeContainer" + index);
-
- //get sponsor time minutes and seconds boxes
- let startTimeMinutes = document.createElement("input");
- startTimeMinutes.id = "startTimeMinutes" + index;
- startTimeMinutes.className = "sponsorTime";
- startTimeMinutes.type = "text";
- startTimeMinutes.value = getTimeInMinutes(sponsorTimes[index][0]);
- startTimeMinutes.style.width = "45";
-
- let startTimeSeconds = document.createElement("input");
- startTimeSeconds.id = "startTimeSeconds" + index;
- startTimeSeconds.className = "sponsorTime";
- startTimeSeconds.type = "text";
- startTimeSeconds.value = getTimeInFormattedSeconds(sponsorTimes[index][0]);
- startTimeSeconds.style.width = "60";
-
- let endTimeMinutes = document.createElement("input");
- endTimeMinutes.id = "endTimeMinutes" + index;
- endTimeMinutes.className = "sponsorTime";
- endTimeMinutes.type = "text";
- endTimeMinutes.value = getTimeInMinutes(sponsorTimes[index][1]);
- endTimeMinutes.style.width = "45";
-
- let endTimeSeconds = document.createElement("input");
- endTimeSeconds.id = "endTimeSeconds" + index;
- endTimeSeconds.className = "sponsorTime";
- endTimeSeconds.type = "text";
- endTimeSeconds.value = getTimeInFormattedSeconds(sponsorTimes[index][1]);
- endTimeSeconds.style.width = "60";
-
- let colonText = document.createElement("span");
- colonText.innerText = ":";
-
- let toText = document.createElement("span");
- toText.innerText = " to ";
-
- //remove all children to replace
- while (sponsorTimeContainer.firstChild) {
- sponsorTimeContainer.removeChild(sponsorTimeContainer.firstChild);
+
+ //deletes the sponsor time submitted at an index
+ function deleteSponsorTime(index) {
+ //if it is not a complete sponsor time
+ if (sponsorTimes[index].length < 2) {
+ chrome.tabs.query({
+ active: true,
+ currentWindow: true
+ }, function(tabs) {
+ chrome.tabs.sendMessage(tabs[0].id, {
+ message: "changeStartSponsorButton",
+ showStartSponsor: true,
+ uploadButtonVisible: false
+ });
+ });
+
+ resetStartTimeChosen();
+ }
+
+ sponsorTimes.splice(index, 1);
+
+ //save this
+ let sponsorTimeKey = "sponsorTimes" + currentVideoID;
+ chrome.storage.sync.set({[sponsorTimeKey]: sponsorTimes});
+
+ //update display
+ displaySponsorTimes();
+
+ //if they are all removed
+ if (sponsorTimes.length == 0) {
+ //update chrome tab
+ chrome.tabs.query({
+ active: true,
+ currentWindow: true
+ }, function(tabs) {
+ chrome.tabs.sendMessage(tabs[0].id, {
+ message: "changeStartSponsorButton",
+ showStartSponsor: true,
+ uploadButtonVisible: false
+ });
+ });
+
+ //hide submission section
+ document.getElementById("submissionSection").style.display = "none";
+ }
}
-
- sponsorTimeContainer.appendChild(startTimeMinutes);
- sponsorTimeContainer.appendChild(colonText);
- sponsorTimeContainer.appendChild(startTimeSeconds);
- sponsorTimeContainer.appendChild(toText);
- sponsorTimeContainer.appendChild(endTimeMinutes);
- sponsorTimeContainer.appendChild(colonText);
- sponsorTimeContainer.appendChild(endTimeSeconds);
-
- //add save button and remove edit button
- let saveButton = document.createElement("span");
- saveButton.id = "sponsorTimeSaveButton" + index;
- saveButton.innerText = "Save";
- saveButton.className = "mediumLink";
- saveButton.addEventListener("click", () => saveSponsorTimeEdit(index));
-
- let editButton = document.getElementById("sponsorTimeEditButton" + index);
- let sponsorTimesContainer = document.getElementById("sponsorTimesContainer");
-
- sponsorTimesContainer.removeChild(editButton);
- sponsorTimesContainer.appendChild(saveButton);
-}
-
-function saveSponsorTimeEdit(index) {
- let startTimeMinutes = document.getElementById("startTimeMinutes" + index);
- let startTimeSeconds = document.getElementById("startTimeSeconds" + index);
-
- let endTimeMinutes = document.getElementById("endTimeMinutes" + index);
- let endTimeSeconds = document.getElementById("endTimeSeconds" + index);
-
- sponsorTimes[index][0] = parseInt(startTimeMinutes.value) * 60 + parseFloat(startTimeSeconds.value);
- sponsorTimes[index][1] = parseInt(endTimeMinutes.value) * 60 + parseFloat(endTimeSeconds.value);
-
- //save this
- let sponsorTimeKey = "sponsorTimes" + currentVideoID;
- chrome.storage.sync.set({[sponsorTimeKey]: sponsorTimes});
-
- displaySponsorTimes();
-}
-
-//deletes the sponsor time submitted at an index
-function deleteSponsorTime(index) {
- //if it is not a complete sponsor time
- if (sponsorTimes[index].length < 2) {
+
+ function clearTimes() {
+ //send new sponsor time state to tab
+ if (sponsorTimes.length > 0) {
+ chrome.tabs.query({
+ active: true,
+ currentWindow: true
+ }, function(tabs) {
+ chrome.tabs.sendMessage(tabs[0].id, {
+ message: "changeStartSponsorButton",
+ showStartSponsor: true,
+ uploadButtonVisible: false
+ });
+ });
+ }
+
+ //reset sponsorTimes
+ sponsorTimes = [];
+
+ let sponsorTimeKey = "sponsorTimes" + currentVideoID;
+ chrome.storage.sync.set({[sponsorTimeKey]: sponsorTimes});
+
+ displaySponsorTimes();
+
+ //hide submission section
+ document.getElementById("submissionSection").style.display = "none";
+
+ resetStartTimeChosen();
+ }
+
+ function submitTimes() {
+ //make info message say loading
+ document.getElementById("submitTimesInfoMessage").innerText = "Loading...";
+ document.getElementById("submitTimesInfoMessageContainer").style.display = "unset";
+
+ if (sponsorTimes.length > 0) {
+ chrome.runtime.sendMessage({
+ message: "submitTimes",
+ videoID: currentVideoID
+ }, function(response) {
+ if (response != undefined) {
+ if (response.statusCode == 200) {
+ //hide loading message
+ document.getElementById("submitTimesInfoMessageContainer").style.display = "none";
+
+ clearTimes();
+ } else if(response.statusCode == 400) {
+ document.getElementById("submitTimesInfoMessage").innerText = "Server said this request was invalid";
+ document.getElementById("submitTimesInfoMessageContainer").style.display = "unset";
+ } else if(response.statusCode == 429) {
+ document.getElementById("submitTimesInfoMessage").innerText = "You have submitted too many sponsor times for this one video, are you sure there are this many?";
+ document.getElementById("submitTimesInfoMessageContainer").style.display = "unset";
+ } else if(response.statusCode == 409) {
+ document.getElementById("submitTimesInfoMessage").innerText = "This has already been submitted before";
+ document.getElementById("submitTimesInfoMessageContainer").style.display = "unset";
+ } else if(response.statusCode == 502) {
+ document.getElementById("submitTimesInfoMessage").innerText = "It seems the server is down. Contact the dev to inform them. Error code " + response.statusCode;
+ document.getElementById("submitTimesInfoMessageContainer").style.display = "unset";
+ } else {
+ document.getElementById("submitTimesInfoMessage").innerText = "There was an error submitting your sponsor times, please try again later. Error code " + response.statusCode;
+ document.getElementById("submitTimesInfoMessageContainer").style.display = "unset";
+ }
+ }
+ });
+ }
+ }
+
+ function showNoticeAgain() {
+ chrome.storage.sync.set({"dontShowNoticeAgain": false});
+
chrome.tabs.query({
active: true,
currentWindow: true
}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {
- message: "changeStartSponsorButton",
- showStartSponsor: true,
- uploadButtonVisible: false
+ message: "showNoticeAgain"
});
});
-
- resetStartTimeChosen();
+
+ SB.showNoticeAgain.style.display = "none";
}
-
- sponsorTimes.splice(index, 1);
-
- //save this
- let sponsorTimeKey = "sponsorTimes" + currentVideoID;
- chrome.storage.sync.set({[sponsorTimeKey]: sponsorTimes});
-
- //update display
- displaySponsorTimes();
-
- //if they are all removed
- if (sponsorTimes.length == 0) {
- //update chrome tab
+
+ function hideVideoPlayerControls() {
+ chrome.storage.sync.set({"hideVideoPlayerControls": true});
+
chrome.tabs.query({
active: true,
currentWindow: true
}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {
- message: "changeStartSponsorButton",
- showStartSponsor: true,
- uploadButtonVisible: false
+ message: "changeVideoPlayerControlsVisibility",
+ value: true
});
});
-
- //hide submission section
- document.getElementById("submissionSection").style.display = "none";
+
+ SB.hideVideoPlayerControls.style.display = "none";
+ SB.showVideoPlayerControls.style.display = "unset";
}
-}
-
-function clearTimes() {
- //send new sponsor time state to tab
- if (sponsorTimes.length > 0) {
+
+ function showVideoPlayerControls() {
+ chrome.storage.sync.set({"hideVideoPlayerControls": false});
+
chrome.tabs.query({
active: true,
currentWindow: true
}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {
- message: "changeStartSponsorButton",
- showStartSponsor: true,
- uploadButtonVisible: false
+ message: "changeVideoPlayerControlsVisibility",
+ value: false
});
});
+
+ SB.hideVideoPlayerControls.style.display = "unset";
+ SB.showVideoPlayerControls.style.display = "none";
}
-
- //reset sponsorTimes
- sponsorTimes = [];
-
- let sponsorTimeKey = "sponsorTimes" + currentVideoID;
- chrome.storage.sync.set({[sponsorTimeKey]: sponsorTimes});
-
- displaySponsorTimes();
-
- //hide submission section
- document.getElementById("submissionSection").style.display = "none";
-
- resetStartTimeChosen();
-}
-
-function submitTimes() {
- //make info message say loading
- document.getElementById("submitTimesInfoMessage").innerText = "Loading...";
- document.getElementById("submitTimesInfoMessageContainer").style.display = "unset";
-
- if (sponsorTimes.length > 0) {
- chrome.runtime.sendMessage({
- message: "submitTimes",
- videoID: currentVideoID
- }, function(response) {
- if (response != undefined) {
- if (response.statusCode == 200) {
- //hide loading message
- document.getElementById("submitTimesInfoMessageContainer").style.display = "none";
-
- clearTimes();
- } else if(response.statusCode == 400) {
- document.getElementById("submitTimesInfoMessage").innerText = "Server said this request was invalid";
- document.getElementById("submitTimesInfoMessageContainer").style.display = "unset";
- } else if(response.statusCode == 429) {
- document.getElementById("submitTimesInfoMessage").innerText = "You have submitted too many sponsor times for this one video, are you sure there are this many?";
- document.getElementById("submitTimesInfoMessageContainer").style.display = "unset";
- } else if(response.statusCode == 409) {
- document.getElementById("submitTimesInfoMessage").innerText = "This has already been submitted before";
- document.getElementById("submitTimesInfoMessageContainer").style.display = "unset";
- } else if(response.statusCode == 502) {
- document.getElementById("submitTimesInfoMessage").innerText = "It seems the server is down. Contact the dev to inform them. Error code " + response.statusCode;
- document.getElementById("submitTimesInfoMessageContainer").style.display = "unset";
- } else {
- document.getElementById("submitTimesInfoMessage").innerText = "There was an error submitting your sponsor times, please try again later. Error code " + response.statusCode;
- document.getElementById("submitTimesInfoMessageContainer").style.display = "unset";
- }
- }
+
+ function hideInfoButtonPlayerControls() {
+ chrome.storage.sync.set({"hideInfoButtonPlayerControls": true});
+
+ chrome.tabs.query({
+ active: true,
+ currentWindow: true
+ }, function(tabs) {
+ chrome.tabs.sendMessage(tabs[0].id, {
+ message: "changeInfoButtonPlayerControlsVisibility",
+ value: true
+ });
});
+
+ SB.hideInfoButtonPlayerControls.style.display = "none";
+ SB.showInfoButtonPlayerControls.style.display = "unset";
}
-}
-
-function showNoticeAgain() {
- chrome.storage.sync.set({"dontShowNoticeAgain": false});
-
- chrome.tabs.query({
- active: true,
- currentWindow: true
- }, function(tabs) {
- chrome.tabs.sendMessage(tabs[0].id, {
- message: "showNoticeAgain"
- });
- });
-
- SB.showNoticeAgain.style.display = "none";
-}
-
-function hideVideoPlayerControls() {
- chrome.storage.sync.set({"hideVideoPlayerControls": true});
-
- chrome.tabs.query({
- active: true,
- currentWindow: true
- }, function(tabs) {
- chrome.tabs.sendMessage(tabs[0].id, {
- message: "changeVideoPlayerControlsVisibility",
- value: true
- });
- });
-
- SB.hideVideoPlayerControls.style.display = "none";
- SB.showVideoPlayerControls.style.display = "unset";
-}
-
-function showVideoPlayerControls() {
- chrome.storage.sync.set({"hideVideoPlayerControls": false});
-
- chrome.tabs.query({
- active: true,
- currentWindow: true
- }, function(tabs) {
- chrome.tabs.sendMessage(tabs[0].id, {
- message: "changeVideoPlayerControlsVisibility",
- value: false
- });
- });
-
- SB.hideVideoPlayerControls.style.display = "unset";
- SB.showVideoPlayerControls.style.display = "none";
-}
-
-function hideInfoButtonPlayerControls() {
- chrome.storage.sync.set({"hideInfoButtonPlayerControls": true});
-
- chrome.tabs.query({
- active: true,
- currentWindow: true
- }, function(tabs) {
- chrome.tabs.sendMessage(tabs[0].id, {
- message: "changeInfoButtonPlayerControlsVisibility",
- value: true
- });
- });
-
- SB.hideInfoButtonPlayerControls.style.display = "none";
- SB.showInfoButtonPlayerControls.style.display = "unset";
-}
-
-function showInfoButtonPlayerControls() {
- chrome.storage.sync.set({"hideInfoButtonPlayerControls": false});
-
- chrome.tabs.query({
- active: true,
- currentWindow: true
- }, function(tabs) {
- chrome.tabs.sendMessage(tabs[0].id, {
- message: "changeVideoPlayerCochangeInfoButtonPlayerControlsVisibilityntrolsVisibility",
- value: false
+
+ function showInfoButtonPlayerControls() {
+ chrome.storage.sync.set({"hideInfoButtonPlayerControls": false});
+
+ chrome.tabs.query({
+ active: true,
+ currentWindow: true
+ }, function(tabs) {
+ chrome.tabs.sendMessage(tabs[0].id, {
+ message: "changeVideoPlayerCochangeInfoButtonPlayerControlsVisibilityntrolsVisibility",
+ value: false
+ });
});
- });
-
- SB.hideInfoButtonPlayerControls.style.display = "unset";
- SB.showInfoButtonPlayerControls.style.display = "none";
-}
-
-function hideDeleteButtonPlayerControls() {
- chrome.storage.sync.set({"hideDeleteButtonPlayerControls": true});
-
- chrome.tabs.query({
- active: true,
- currentWindow: true
- }, function(tabs) {
- chrome.tabs.sendMessage(tabs[0].id, {
- message: "changeDeleteButtonPlayerControlsVisibility",
- value: true
+
+ SB.hideInfoButtonPlayerControls.style.display = "unset";
+ SB.showInfoButtonPlayerControls.style.display = "none";
+ }
+
+ function hideDeleteButtonPlayerControls() {
+ chrome.storage.sync.set({"hideDeleteButtonPlayerControls": true});
+
+ chrome.tabs.query({
+ active: true,
+ currentWindow: true
+ }, function(tabs) {
+ chrome.tabs.sendMessage(tabs[0].id, {
+ message: "changeDeleteButtonPlayerControlsVisibility",
+ value: true
+ });
});
- });
-
- SB.hideDeleteButtonPlayerControls.style.display = "none";
- SB.showDeleteButtonPlayerControls.style.display = "unset";
-}
-
-function showDeleteButtonPlayerControls() {
- chrome.storage.sync.set({"hideDeleteButtonPlayerControls": false});
-
- chrome.tabs.query({
- active: true,
- currentWindow: true
- }, function(tabs) {
- chrome.tabs.sendMessage(tabs[0].id, {
- message: "changeVideoPlayerCochangeDeleteButtonPlayerControlsVisibilityntrolsVisibility",
- value: false
+
+ SB.hideDeleteButtonPlayerControls.style.display = "none";
+ SB.showDeleteButtonPlayerControls.style.display = "unset";
+ }
+
+ function showDeleteButtonPlayerControls() {
+ chrome.storage.sync.set({"hideDeleteButtonPlayerControls": false});
+
+ chrome.tabs.query({
+ active: true,
+ currentWindow: true
+ }, function(tabs) {
+ chrome.tabs.sendMessage(tabs[0].id, {
+ message: "changeVideoPlayerCochangeDeleteButtonPlayerControlsVisibilityntrolsVisibility",
+ value: false
+ });
});
- });
-
- SB.hideDeleteButtonPlayerControls.style.display = "unset";
- SB.showDeleteButtonPlayerControls.style.display = "none";
-}
-
-function disableSponsorViewTracking() {
- chrome.storage.sync.set({"trackViewCount": false});
-
- chrome.tabs.query({
- active: true,
- currentWindow: true
- }, function(tabs) {
- chrome.tabs.sendMessage(tabs[0].id, {
- message: "trackViewCount",
- value: false
+
+ SB.hideDeleteButtonPlayerControls.style.display = "unset";
+ SB.showDeleteButtonPlayerControls.style.display = "none";
+ }
+
+ function disableSponsorViewTracking() {
+ chrome.storage.sync.set({"trackViewCount": false});
+
+ chrome.tabs.query({
+ active: true,
+ currentWindow: true
+ }, function(tabs) {
+ chrome.tabs.sendMessage(tabs[0].id, {
+ message: "trackViewCount",
+ value: false
+ });
});
- });
-
- SB.disableSponsorViewTracking.style.display = "none";
- SB.enableSponsorViewTracking.style.display = "unset";
-}
-
-function enableSponsorViewTracking() {
- chrome.storage.sync.set({"trackViewCount": true});
-
- chrome.tabs.query({
- active: true,
- currentWindow: true
- }, function(tabs) {
- chrome.tabs.sendMessage(tabs[0].id, {
- message: "trackViewCount",
- value: true
+
+ SB.disableSponsorViewTracking.style.display = "none";
+ SB.enableSponsorViewTracking.style.display = "unset";
+ }
+
+ function enableSponsorViewTracking() {
+ chrome.storage.sync.set({"trackViewCount": true});
+
+ chrome.tabs.query({
+ active: true,
+ currentWindow: true
+ }, function(tabs) {
+ chrome.tabs.sendMessage(tabs[0].id, {
+ message: "trackViewCount",
+ value: true
+ });
});
- });
-
- SB.enableSponsorViewTracking.style.display = "none";
- SB.disableSponsorViewTracking.style.display = "unset";
-}
-
-function updateStartTimeChosen() {
- //update startTimeChosen variable
- if (!startTimeChosen) {
- startTimeChosen = true;
- SB.sponsorStart.innerHTML = "Sponsorship Ends Now";
- } else {
- resetStartTimeChosen();
+
+ SB.enableSponsorViewTracking.style.display = "none";
+ SB.disableSponsorViewTracking.style.display = "unset";
}
-}
-
-//set it to false
-function resetStartTimeChosen() {
- startTimeChosen = false;
- SB.sponsorStart.innerHTML = "Sponsorship Starts Now";
-}
-
-//hides and shows the submit times button when needed
-function showSubmitTimesIfNecessary() {
- //check if an end time has been specified for the latest sponsor time
- if (sponsorTimes.length > 0 && sponsorTimes[sponsorTimes.length - 1].length > 1) {
- //show submit times button
- document.getElementById("submitTimesContainer").style.display = "unset";
- } else {
- //hide submit times button
- document.getElementById("submitTimesContainer").style.display = "none";
+
+ function updateStartTimeChosen() {
+ //update startTimeChosen letiable
+ if (!startTimeChosen) {
+ startTimeChosen = true;
+ SB.sponsorStart.innerHTML = "Sponsorship Ends Now";
+ } else {
+ resetStartTimeChosen();
+ }
}
-}
-
-//make the options div visisble
-function openOptions() {
- document.getElementById("optionsButtonContainer").style.display = "none";
- document.getElementById("options").style.display = "unset";
-}
-
-//this is not a YouTube video page
-function displayNoVideo() {
- document.getElementById("loadingIndicator").innerHTML = "This probably isn't a YouTube tab, or you clicked too early. " +
- "If you know this is a YouTube tab, close this popup and open it again.";
-}
-
-function reportAnIssue() {
- document.getElementById("issueReporterContainer").style.display = "unset";
- SB.reportAnIssue.style.display = "none";
-}
-
-function addVoteMessage(message, UUID) {
- let container = document.getElementById("sponsorTimesVoteButtonsContainer" + UUID);
- //remove all children
- while (container.firstChild) {
- container.removeChild(container.firstChild);
+
+ //set it to false
+ function resetStartTimeChosen() {
+ startTimeChosen = false;
+ SB.sponsorStart.innerHTML = "Sponsorship Starts Now";
}
-
- let thanksForVotingText = document.createElement("h2");
- thanksForVotingText.innerText = message;
- //there are already breaks there
- thanksForVotingText.style.marginBottom = "0px";
-
- container.appendChild(thanksForVotingText);
-}
-
-function vote(type, UUID) {
- //add loading info
- addVoteMessage("Loading...", UUID)
-
- //send the vote message to the tab
- chrome.runtime.sendMessage({
- message: "submitVote",
- type: type,
- UUID: UUID
- }, function(response) {
- if (response != undefined) {
- //see if it was a success or failure
- if (response.successType == 1) {
- //success
- addVoteMessage("Thanks for voting!", UUID)
- } else if (response.successType == 0) {
- //failure: duplicate vote
- addVoteMessage("You have already voted this way before.", UUID)
- } else if (response.successType == -1) {
- if (response.statusCode == 502) {
- addVoteMessage("It seems the sever is down. Contact the dev immediately.", UUID)
- } else {
- //failure: unknown error
- addVoteMessage("A connection error has occured. Error code: " + response.statusCode, UUID)
+
+ //hides and shows the submit times button when needed
+ function showSubmitTimesIfNecessary() {
+ //check if an end time has been specified for the latest sponsor time
+ if (sponsorTimes.length > 0 && sponsorTimes[sponsorTimes.length - 1].length > 1) {
+ //show submit times button
+ document.getElementById("submitTimesContainer").style.display = "unset";
+ } else {
+ //hide submit times button
+ document.getElementById("submitTimesContainer").style.display = "none";
+ }
+ }
+
+ //make the options div visisble
+ function openOptions() {
+ document.getElementById("optionsButtonContainer").style.display = "none";
+ document.getElementById("options").style.display = "unset";
+ }
+
+ //this is not a YouTube video page
+ function displayNoVideo() {
+ document.getElementById("loadingIndicator").innerHTML = "This probably isn't a YouTube tab, or you clicked too early. " +
+ "If you know this is a YouTube tab, close this popup and open it again.";
+ }
+
+ function reportAnIssue() {
+ document.getElementById("issueReporterContainer").style.display = "unset";
+ SB.reportAnIssue.style.display = "none";
+ }
+
+ function addVoteMessage(message, UUID) {
+ let container = document.getElementById("sponsorTimesVoteButtonsContainer" + UUID);
+ //remove all children
+ while (container.firstChild) {
+ container.removeChild(container.firstChild);
+ }
+
+ let thanksForVotingText = document.createElement("h2");
+ thanksForVotingText.innerText = message;
+ //there are already breaks there
+ thanksForVotingText.style.marginBottom = "0px";
+
+ container.appendChild(thanksForVotingText);
+ }
+
+ function vote(type, UUID) {
+ //add loading info
+ addVoteMessage("Loading...", UUID)
+
+ //send the vote message to the tab
+ chrome.runtime.sendMessage({
+ message: "submitVote",
+ type: type,
+ UUID: UUID
+ }, function(response) {
+ if (response != undefined) {
+ //see if it was a success or failure
+ if (response.successType == 1) {
+ //success
+ addVoteMessage("Thanks for voting!", UUID)
+ } else if (response.successType == 0) {
+ //failure: duplicate vote
+ addVoteMessage("You have already voted this way before.", UUID)
+ } else if (response.successType == -1) {
+ if (response.statusCode == 502) {
+ addVoteMessage("It seems the sever is down. Contact the dev immediately.", UUID)
+ } else {
+ //failure: unknown error
+ addVoteMessage("A connection error has occured. Error code: " + response.statusCode, UUID)
+ }
}
}
+ });
+ }
+
+ function hideDiscordButton() {
+ chrome.storage.sync.set({"hideDiscordLink": false});
+
+ SB.discordButtonContainer.style.display = "none";
+ }
+
+ //converts time in seconds to minutes:seconds
+ function getFormattedTime(seconds) {
+ let minutes = Math.floor(seconds / 60);
+ let secondsDisplay = Math.round(seconds - minutes * 60);
+ if (secondsDisplay < 10) {
+ //add a zero
+ secondsDisplay = "0" + secondsDisplay;
}
- });
-}
-
-function hideDiscordButton() {
- chrome.storage.sync.set({"hideDiscordLink": false});
-
- SB.discordButtonContainer.style.display = "none";
-}
-
-//converts time in seconds to minutes:seconds
-function getFormattedTime(seconds) {
- let minutes = Math.floor(seconds / 60);
- let secondsDisplay = Math.round(seconds - minutes * 60);
- if (secondsDisplay < 10) {
- //add a zero
- secondsDisplay = "0" + secondsDisplay;
+
+ let formatted = minutes+ ":" + secondsDisplay;
+
+ return formatted;
}
-
- let formatted = minutes+ ":" + secondsDisplay;
-
- return formatted;
-}
-
-//converts time in seconds to minutes
-function getTimeInMinutes(seconds) {
- let minutes = Math.floor(seconds / 60);
-
- return minutes;
-}
-
-//converts time in seconds to seconds past the last minute
-function getTimeInFormattedSeconds(seconds) {
- let secondsFormatted = (seconds % 60).toFixed(3);
-
- if (secondsFormatted < 10) {
- secondsFormatted = "0" + secondsFormatted;
+
+ //converts time in seconds to minutes
+ function getTimeInMinutes(seconds) {
+ let minutes = Math.floor(seconds / 60);
+
+ return minutes;
}
-
- return secondsFormatted;
-}
-
-function sendRequestToServer(type, address, callback) {
- let xmlhttp = new XMLHttpRequest();
-
- xmlhttp.open(type, serverAddress + address, true);
-
- if (callback != undefined) {
- xmlhttp.onreadystatechange = function () {
- callback(xmlhttp, false);
- };
- xmlhttp.onerror = function(ev) {
- callback(xmlhttp, true);
- };
+ //converts time in seconds to seconds past the last minute
+ function getTimeInFormattedSeconds(seconds) {
+ let secondsFormatted = (seconds % 60).toFixed(3);
+
+ if (secondsFormatted < 10) {
+ secondsFormatted = "0" + secondsFormatted;
+ }
+
+ return secondsFormatted;
}
-
- //submit this request
- xmlhttp.send();
+
+ function sendRequestToServer(type, address, callback) {
+ let xmlhttp = new XMLHttpRequest();
+
+ xmlhttp.open(type, serverAddress + address, true);
+
+ if (callback != undefined) {
+ xmlhttp.onreadystatechange = function () {
+ callback(xmlhttp, false);
+ };
+
+ xmlhttp.onerror = function(ev) {
+ callback(xmlhttp, true);
+ };
+ }
+
+ //submit this request
+ xmlhttp.send();
+ }
+
+ function getYouTubeVideoID(url) { // Returns with video id else returns false
+ var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/;
+ var match = url.match(regExp);
+ var id = new URL(url).searchParams.get("v");
+ return (match && match[7].length == 11) ? id : false;
+ }
+
+//end of function
}
-function getYouTubeVideoID(url) { // Returns with video id else returns false
- var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/;
- var match = url.match(regExp);
- var id = new URL(url).searchParams.get("v");
- return (match && match[7].length == 11) ? id : false;
+if (chrome.tabs != undefined) {
+ //add the width restriction (because Firefox)
+ document.getElementById("sponorBlockStyleSheet").sheet.insertRule('.popupBody { width: 300 }', 0);
+
+ //this means it is actually opened in the popup
+ runThePopup();
}
+