Merged into master

This commit is contained in:
Ajay Ramachandran
2019-07-31 23:09:33 -04:00
parent d51e8044f4
commit 25801b6fcd

401
popup.js
View File

@@ -1,72 +1,95 @@
var SB = {}; //make this a function to allow this to run on the content page
function runThePopup() {
["sponsorStart", //is it in the popup or content script
"clearTimes", var inPopup = true;
"submitTimes", if (chrome.tabs == undefined) {
"showNoticeAgain", //this is on the content script, use direct communication
"hideVideoPlayerControls", chrome.tabs = {};
"showVideoPlayerControls", chrome.tabs.sendMessage = function(id, request, callback) {
"hideInfoButtonPlayerControls", messageListener(request, null, callback);
"showInfoButtonPlayerControls", }
"hideDeleteButtonPlayerControls",
"showDeleteButtonPlayerControls", //add a dummy query method
"disableSponsorViewTracking", chrome.tabs.query = function(config, callback) {
"enableSponsorViewTracking", callback([{
"optionsButton", url: document.URL,
"reportAnIssue", id: -1
// sponsorTimesContributions }]);
"sponsorTimesContributionsContainer", }
"sponsorTimesContributionsDisplay",
"sponsorTimesContributionsDisplayEndWord", inPopup = false;
// sponsorTimesViewsDisplay }
"sponsorTimesViewsContainer",
"sponsorTimesViewsDisplay", var SB = {};
"sponsorTimesViewsDisplayEndWord",
// discordButtons ["sponsorStart",
"discordButtonContainer", "clearTimes",
"hideDiscordButton", "submitTimes",
// More "showNoticeAgain",
"hideVideoPlayerControls",
"showVideoPlayerControls",
"hideInfoButtonPlayerControls",
"showInfoButtonPlayerControls",
"hideDeleteButtonPlayerControls",
"showDeleteButtonPlayerControls",
"disableSponsorViewTracking",
"enableSponsorViewTracking",
"optionsButton",
"reportAnIssue",
// sponsorTimesContributions
"sponsorTimesContributionsContainer",
"sponsorTimesContributionsDisplay",
"sponsorTimesContributionsDisplayEndWord",
// sponsorTimesViewsDisplay
"sponsorTimesViewsContainer",
"sponsorTimesViewsDisplay",
"sponsorTimesViewsDisplayEndWord",
// discordButtons
"discordButtonContainer",
"hideDiscordButton",
// More
"submissionSection", "submissionSection",
"mainControls", "mainControls",
"loadingIndicator", "loadingIndicator",
"videoFound", "videoFound",
"sponsorMessageTimes", "sponsorMessageTimes",
"downloadedSponsorMessageTimes", "downloadedSponsorMessageTimes",
].forEach(id => SB[id] = document.getElementById(id)); ].forEach(id => SB[id] = document.getElementById(id));
//setup click listeners //setup click listeners
SB.sponsorStart.addEventListener("click", sendSponsorStartMessage); SB.sponsorStart.addEventListener("click", sendSponsorStartMessage);
SB.clearTimes.addEventListener("click", clearTimes); SB.clearTimes.addEventListener("click", clearTimes);
SB.submitTimes.addEventListener("click", submitTimes); SB.submitTimes.addEventListener("click", submitTimes);
SB.showNoticeAgain.addEventListener("click", showNoticeAgain); SB.showNoticeAgain.addEventListener("click", showNoticeAgain);
SB.hideVideoPlayerControls.addEventListener("click", hideVideoPlayerControls); SB.hideVideoPlayerControls.addEventListener("click", hideVideoPlayerControls);
SB.showVideoPlayerControls.addEventListener("click", showVideoPlayerControls); SB.showVideoPlayerControls.addEventListener("click", showVideoPlayerControls);
SB.hideInfoButtonPlayerControls.addEventListener("click", hideInfoButtonPlayerControls); SB.hideInfoButtonPlayerControls.addEventListener("click", hideInfoButtonPlayerControls);
SB.showInfoButtonPlayerControls.addEventListener("click", showInfoButtonPlayerControls); SB.showInfoButtonPlayerControls.addEventListener("click", showInfoButtonPlayerControls);
SB.hideDeleteButtonPlayerControls.addEventListener("click", hideDeleteButtonPlayerControls); SB.hideDeleteButtonPlayerControls.addEventListener("click", hideDeleteButtonPlayerControls);
SB.showDeleteButtonPlayerControls.addEventListener("click", showDeleteButtonPlayerControls); SB.showDeleteButtonPlayerControls.addEventListener("click", showDeleteButtonPlayerControls);
SB.disableSponsorViewTracking.addEventListener("click", disableSponsorViewTracking); SB.disableSponsorViewTracking.addEventListener("click", disableSponsorViewTracking);
SB.enableSponsorViewTracking.addEventListener("click", enableSponsorViewTracking); SB.enableSponsorViewTracking.addEventListener("click", enableSponsorViewTracking);
SB.optionsButton.addEventListener("click", openOptions); SB.optionsButton.addEventListener("click", openOptions);
SB.reportAnIssue.addEventListener("click", reportAnIssue); SB.reportAnIssue.addEventListener("click", reportAnIssue);
SB.hideDiscordButton.addEventListener("click", hideDiscordButton); SB.hideDiscordButton.addEventListener("click", hideDiscordButton);
//if true, the button now selects the end time //if true, the button now selects the end time
var startTimeChosen = false; let startTimeChosen = false;
//the start and end time pairs (2d) //the start and end time pairs (2d)
var sponsorTimes = []; let sponsorTimes = [];
//current video ID of this tab //current video ID of this tab
var currentVideoID = null; let currentVideoID = null;
//is this a YouTube tab? //is this a YouTube tab?
var isYouTubeTab = false; let isYouTubeTab = false;
//see if discord link can be shown //see if discord link can be shown
chrome.storage.sync.get(["hideDiscordLink"], function(result) { chrome.storage.sync.get(["hideDiscordLink"], function(result) {
let hideDiscordLink = result.hideDiscordLink; let hideDiscordLink = result.hideDiscordLink;
if (hideDiscordLink == undefined || !hideDiscordLink) { if (hideDiscordLink == undefined || !hideDiscordLink) {
chrome.storage.sync.get(["hideDiscordLaunches"], function(result) { chrome.storage.sync.get(["hideDiscordLaunches"], function(result) {
@@ -83,51 +106,51 @@ chrome.storage.sync.get(["hideDiscordLink"], function(result) {
} }
}); });
} }
}); });
//if the don't show notice again variable is true, an option to //if the don't show notice again letiable is true, an option to
// disable should be available // disable should be available
chrome.storage.sync.get(["dontShowNoticeAgain"], function(result) { chrome.storage.sync.get(["dontShowNoticeAgain"], function(result) {
let dontShowNoticeAgain = result.dontShowNoticeAgain; let dontShowNoticeAgain = result.dontShowNoticeAgain;
if (dontShowNoticeAgain != undefined && dontShowNoticeAgain) { if (dontShowNoticeAgain != undefined && dontShowNoticeAgain) {
SB.showNoticeAgain.style.display = "unset"; SB.showNoticeAgain.style.display = "unset";
} }
}); });
//show proper video player controls options //show proper video player controls options
chrome.storage.sync.get(["hideVideoPlayerControls"], function(result) { chrome.storage.sync.get(["hideVideoPlayerControls"], function(result) {
let hideVideoPlayerControls = result.hideVideoPlayerControls; let hideVideoPlayerControls = result.hideVideoPlayerControls;
if (hideVideoPlayerControls != undefined && hideVideoPlayerControls) { if (hideVideoPlayerControls != undefined && hideVideoPlayerControls) {
SB.hideVideoPlayerControls.style.display = "none"; SB.hideVideoPlayerControls.style.display = "none";
SB.showVideoPlayerControls.style.display = "unset"; SB.showVideoPlayerControls.style.display = "unset";
} }
}); });
chrome.storage.sync.get(["hideInfoButtonPlayerControls"], function(result) { chrome.storage.sync.get(["hideInfoButtonPlayerControls"], function(result) {
let hideInfoButtonPlayerControls = result.hideInfoButtonPlayerControls; let hideInfoButtonPlayerControls = result.hideInfoButtonPlayerControls;
if (hideInfoButtonPlayerControls != undefined && hideInfoButtonPlayerControls) { if (hideInfoButtonPlayerControls != undefined && hideInfoButtonPlayerControls) {
SB.hideInfoButtonPlayerControls.style.display = "none"; SB.hideInfoButtonPlayerControls.style.display = "none";
SB.showInfoButtonPlayerControls.style.display = "unset"; SB.showInfoButtonPlayerControls.style.display = "unset";
} }
}); });
chrome.storage.sync.get(["hideDeleteButtonPlayerControls"], function(result) { chrome.storage.sync.get(["hideDeleteButtonPlayerControls"], function(result) {
let hideDeleteButtonPlayerControls = result.hideDeleteButtonPlayerControls; let hideDeleteButtonPlayerControls = result.hideDeleteButtonPlayerControls;
if (hideDeleteButtonPlayerControls != undefined && hideDeleteButtonPlayerControls) { if (hideDeleteButtonPlayerControls != undefined && hideDeleteButtonPlayerControls) {
SB.hideDeleteButtonPlayerControls.style.display = "none"; SB.hideDeleteButtonPlayerControls.style.display = "none";
SB.showDeleteButtonPlayerControls.style.display = "unset"; SB.showDeleteButtonPlayerControls.style.display = "unset";
} }
}); });
//show proper tracking option //show proper tracking option
chrome.storage.sync.get(["trackViewCount"], function(result) { chrome.storage.sync.get(["trackViewCount"], function(result) {
let trackViewCount = result.trackViewCount; let trackViewCount = result.trackViewCount;
if (trackViewCount != undefined && !trackViewCount) { if (trackViewCount != undefined && !trackViewCount) {
SB.disableSponsorViewTracking.style.display = "none"; SB.disableSponsorViewTracking.style.display = "none";
SB.enableSponsorViewTracking.style.display = "unset"; SB.enableSponsorViewTracking.style.display = "unset";
} }
}); });
//get the amount of times this user has contributed and display it to thank them //get the amount of times this user has contributed and display it to thank them
chrome.storage.sync.get(["sponsorTimesContributed"], function(result) { chrome.storage.sync.get(["sponsorTimesContributed"], function(result) {
if (result.sponsorTimesContributed != undefined) { if (result.sponsorTimesContributed != undefined) {
if (result.sponsorTimesContributed > 1) { if (result.sponsorTimesContributed > 1) {
SB.sponsorTimesContributionsDisplayEndWord.innerText = "sponsors." SB.sponsorTimesContributionsDisplayEndWord.innerText = "sponsors."
@@ -160,15 +183,16 @@ chrome.storage.sync.get(["sponsorTimesContributed"], function(result) {
} }
}); });
} }
}); });
chrome.tabs.query({ chrome.tabs.query({
active: true, active: true,
currentWindow: true currentWindow: true
}, loadTabData); }, loadTabData);
function loadTabData(tabs) {
function loadTabData(tabs) {
//set current videoID //set current videoID
currentVideoID = getYouTubeVideoID(tabs[0].url); currentVideoID = getYouTubeVideoID(tabs[0].url);
@@ -205,9 +229,9 @@ function loadTabData(tabs) {
{message: 'isInfoFound'}, {message: 'isInfoFound'},
infoFound infoFound
); );
} }
function infoFound(request) { function infoFound(request) {
if(chrome.runtime.lastError) { if(chrome.runtime.lastError) {
//This page doesn't have the injected content script, or at least not yet //This page doesn't have the injected content script, or at least not yet
displayNoVideo(); displayNoVideo();
@@ -217,7 +241,7 @@ function infoFound(request) {
//if request is undefined, then the page currently being browsed is not YouTube //if request is undefined, then the page currently being browsed is not YouTube
if (request != undefined) { if (request != undefined) {
//this must be a YouTube video //this must be a YouTube video
//set variable //set letiable
isYouTubeTab = true; isYouTubeTab = true;
//remove loading text //remove loading text
@@ -232,16 +256,16 @@ function infoFound(request) {
SB.videoFound.innerHTML = "No sponsors found" SB.videoFound.innerHTML = "No sponsors found"
} }
} }
} }
function setVideoID(request) { function setVideoID(request) {
//if request is undefined, then the page currently being browsed is not YouTube //if request is undefined, then the page currently being browsed is not YouTube
if (request != undefined) { if (request != undefined) {
videoID = request.videoID; videoID = request.videoID;
} }
} }
function sendSponsorStartMessage() { function sendSponsorStartMessage() {
//the content script will get the message if a YouTube page is open //the content script will get the message if a YouTube page is open
chrome.tabs.query({ chrome.tabs.query({
active: true, active: true,
@@ -253,9 +277,9 @@ function sendSponsorStartMessage() {
startSponsorCallback startSponsorCallback
); );
}); });
} }
function startSponsorCallback(response) { function startSponsorCallback(response) {
let sponsorTimesIndex = sponsorTimes.length - (startTimeChosen ? 1 : 0); let sponsorTimesIndex = sponsorTimes.length - (startTimeChosen ? 1 : 0);
if (sponsorTimes[sponsorTimesIndex] == undefined) { if (sponsorTimes[sponsorTimesIndex] == undefined) {
@@ -276,11 +300,10 @@ function startSponsorCallback(response) {
SB.submissionSection.style.display = "unset"; SB.submissionSection.style.display = "unset";
showSubmitTimesIfNecessary(); showSubmitTimesIfNecessary();
} }
//display the video times from the array
function displaySponsorTimes() {
//display the video times from the array
function displaySponsorTimes() {
//remove all children //remove all children
while (SB.sponsorMessageTimes.firstChild) { while (SB.sponsorMessageTimes.firstChild) {
SB.sponsorMessageTimes.removeChild(SB.sponsorMessageTimes.firstChild); SB.sponsorMessageTimes.removeChild(SB.sponsorMessageTimes.firstChild);
@@ -288,19 +311,19 @@ function displaySponsorTimes() {
//add sponsor times //add sponsor times
SB.sponsorMessageTimes.appendChild(getSponsorTimesMessageDiv(sponsorTimes)); SB.sponsorMessageTimes.appendChild(getSponsorTimesMessageDiv(sponsorTimes));
} }
//display the video times from the array at the top, in a different section //display the video times from the array at the top, in a different section
function displayDownloadedSponsorTimes(request) { function displayDownloadedSponsorTimes(request) {
if (request.sponsorTimes != undefined) { if (request.sponsorTimes != undefined) {
//set it to the message //set it to the message
SB.downloadedSponsorMessageTimes.innerHTML = getSponsorTimesMessage(request.sponsorTimes); SB.downloadedSponsorMessageTimes.innerText = getSponsorTimesMessage(request.sponsorTimes);
//add them as buttons to the issue reporting container //add them as buttons to the issue reporting container
let container = document.getElementById("issueReporterTimeButtons"); let container = document.getElementById("issueReporterTimeButtons");
for (let i = 0; i < request.sponsorTimes.length; i++) { for (let i = 0; i < request.sponsorTimes.length; i++) {
let sponsorTimeButton = document.createElement("button"); let sponsorTimeButton = document.createElement("button");
sponsorTimeButton.className = "warningButton"; sponsorTimeButton.className = "warningButton popupElement";
sponsorTimeButton.innerText = getFormattedTime(request.sponsorTimes[i][0]) + " to " + getFormattedTime(request.sponsorTimes[i][1]); sponsorTimeButton.innerText = getFormattedTime(request.sponsorTimes[i][0]) + " to " + getFormattedTime(request.sponsorTimes[i][1]);
let votingButtons = document.createElement("div"); let votingButtons = document.createElement("div");
@@ -315,13 +338,13 @@ function displayDownloadedSponsorTimes(request) {
let upvoteButton = document.createElement("img"); let upvoteButton = document.createElement("img");
upvoteButton.id = "sponsorTimesUpvoteButtonsContainer" + UUID; upvoteButton.id = "sponsorTimesUpvoteButtonsContainer" + UUID;
upvoteButton.className = "voteButton"; upvoteButton.className = "voteButton popupElement";
upvoteButton.src = chrome.extension.getURL("icons/upvote.png"); upvoteButton.src = chrome.extension.getURL("icons/upvote.png");
upvoteButton.addEventListener("click", () => vote(1, UUID)); upvoteButton.addEventListener("click", () => vote(1, UUID));
let downvoteButton = document.createElement("img"); let downvoteButton = document.createElement("img");
downvoteButton.id = "sponsorTimesDownvoteButtonsContainer" + UUID; downvoteButton.id = "sponsorTimesDownvoteButtonsContainer" + UUID;
downvoteButton.className = "voteButton"; downvoteButton.className = "voteButton popupElement";
downvoteButton.src = chrome.extension.getURL("icons/downvote.png"); downvoteButton.src = chrome.extension.getURL("icons/downvote.png");
downvoteButton.addEventListener("click", () => vote(0, UUID)); downvoteButton.addEventListener("click", () => vote(0, UUID));
@@ -346,10 +369,10 @@ function displayDownloadedSponsorTimes(request) {
} }
} }
} }
} }
//get the message that visually displays the video times //get the message that visually displays the video times
function getSponsorTimesMessage(sponsorTimes) { function getSponsorTimesMessage(sponsorTimes) {
let sponsorTimesMessage = ""; let sponsorTimesMessage = "";
for (let i = 0; i < sponsorTimes.length; i++) { for (let i = 0; i < sponsorTimes.length; i++) {
@@ -368,11 +391,11 @@ function getSponsorTimesMessage(sponsorTimes) {
} }
return sponsorTimesMessage; return sponsorTimesMessage;
} }
//get the message that visually displays the video times //get the message that visually displays the video times
//this version is a div that contains each with delete buttons //this version is a div that contains each with delete buttons
function getSponsorTimesMessageDiv(sponsorTimes) { function getSponsorTimesMessageDiv(sponsorTimes) {
// let sponsorTimesMessage = ""; // let sponsorTimesMessage = "";
let sponsorTimesContainer = document.createElement("div"); let sponsorTimesContainer = document.createElement("div");
sponsorTimesContainer.id = "sponsorTimesContainer"; sponsorTimesContainer.id = "sponsorTimesContainer";
@@ -380,13 +403,13 @@ function getSponsorTimesMessageDiv(sponsorTimes) {
for (let i = 0; i < sponsorTimes.length; i++) { for (let i = 0; i < sponsorTimes.length; i++) {
let currentSponsorTimeContainer = document.createElement("div"); let currentSponsorTimeContainer = document.createElement("div");
currentSponsorTimeContainer.id = "sponsorTimeContainer" + i; currentSponsorTimeContainer.id = "sponsorTimeContainer" + i;
currentSponsorTimeContainer.className = "sponsorTime"; currentSponsorTimeContainer.className = "sponsorTime popupElement";
let currentSponsorTimeMessage = ""; let currentSponsorTimeMessage = "";
let deleteButton = document.createElement("span"); let deleteButton = document.createElement("span");
deleteButton.id = "sponsorTimeDeleteButton" + i; deleteButton.id = "sponsorTimeDeleteButton" + i;
deleteButton.innerText = "Delete"; deleteButton.innerText = "Delete";
deleteButton.className = "mediumLink"; deleteButton.className = "mediumLink popupElement";
let index = i; let index = i;
deleteButton.addEventListener("click", () => deleteSponsorTime(index)); deleteButton.addEventListener("click", () => deleteSponsorTime(index));
@@ -396,7 +419,7 @@ function getSponsorTimesMessageDiv(sponsorTimes) {
let editButton = document.createElement("span"); let editButton = document.createElement("span");
editButton.id = "sponsorTimeEditButton" + i; editButton.id = "sponsorTimeEditButton" + i;
editButton.innerText = "Edit"; editButton.innerText = "Edit";
editButton.className = "mediumLink"; editButton.className = "mediumLink popupElement";
editButton.addEventListener("click", () => editSponsorTime(index)); editButton.addEventListener("click", () => editSponsorTime(index));
for (let s = 0; s < sponsorTimes[i].length; s++) { for (let s = 0; s < sponsorTimes[i].length; s++) {
@@ -425,44 +448,47 @@ function getSponsorTimesMessageDiv(sponsorTimes) {
} }
return sponsorTimesContainer; return sponsorTimesContainer;
} }
function editSponsorTime(index) { function editSponsorTime(index) {
if (document.getElementById("startTimeMinutes" + index) != null) { if (document.getElementById("startTimeMinutes" + index) != null) {
//already open //already open
return; return;
} }
//hide submit button
document.getElementById("submitTimesContainer").style.display = "none";
let sponsorTimeContainer = document.getElementById("sponsorTimeContainer" + index); let sponsorTimeContainer = document.getElementById("sponsorTimeContainer" + index);
//get sponsor time minutes and seconds boxes //get sponsor time minutes and seconds boxes
let startTimeMinutes = document.createElement("input"); let startTimeMinutes = document.createElement("input");
startTimeMinutes.id = "startTimeMinutes" + index; startTimeMinutes.id = "startTimeMinutes" + index;
startTimeMinutes.className = "sponsorTime"; startTimeMinutes.className = "sponsorTime popupElement";
startTimeMinutes.type = "text"; startTimeMinutes.type = "text";
startTimeMinutes.value = getTimeInMinutes(sponsorTimes[index][0]); startTimeMinutes.value = getTimeInMinutes(sponsorTimes[index][0]);
startTimeMinutes.style.width = "45"; startTimeMinutes.style.width = "45px";
let startTimeSeconds = document.createElement("input"); let startTimeSeconds = document.createElement("input");
startTimeSeconds.id = "startTimeSeconds" + index; startTimeSeconds.id = "startTimeSeconds" + index;
startTimeSeconds.className = "sponsorTime"; startTimeSeconds.className = "sponsorTime popupElement";
startTimeSeconds.type = "text"; startTimeSeconds.type = "text";
startTimeSeconds.value = getTimeInFormattedSeconds(sponsorTimes[index][0]); startTimeSeconds.value = getTimeInFormattedSeconds(sponsorTimes[index][0]);
startTimeSeconds.style.width = "60"; startTimeSeconds.style.width = "60px";
let endTimeMinutes = document.createElement("input"); let endTimeMinutes = document.createElement("input");
endTimeMinutes.id = "endTimeMinutes" + index; endTimeMinutes.id = "endTimeMinutes" + index;
endTimeMinutes.className = "sponsorTime"; endTimeMinutes.className = "sponsorTime popupElement";
endTimeMinutes.type = "text"; endTimeMinutes.type = "text";
endTimeMinutes.value = getTimeInMinutes(sponsorTimes[index][1]); endTimeMinutes.value = getTimeInMinutes(sponsorTimes[index][1]);
endTimeMinutes.style.width = "45"; endTimeMinutes.style.width = "45px";
let endTimeSeconds = document.createElement("input"); let endTimeSeconds = document.createElement("input");
endTimeSeconds.id = "endTimeSeconds" + index; endTimeSeconds.id = "endTimeSeconds" + index;
endTimeSeconds.className = "sponsorTime"; endTimeSeconds.className = "sponsorTime popupElement";
endTimeSeconds.type = "text"; endTimeSeconds.type = "text";
endTimeSeconds.value = getTimeInFormattedSeconds(sponsorTimes[index][1]); endTimeSeconds.value = getTimeInFormattedSeconds(sponsorTimes[index][1]);
endTimeSeconds.style.width = "60"; endTimeSeconds.style.width = "60px";
let colonText = document.createElement("span"); let colonText = document.createElement("span");
colonText.innerText = ":"; colonText.innerText = ":";
@@ -487,17 +513,16 @@ function editSponsorTime(index) {
let saveButton = document.createElement("span"); let saveButton = document.createElement("span");
saveButton.id = "sponsorTimeSaveButton" + index; saveButton.id = "sponsorTimeSaveButton" + index;
saveButton.innerText = "Save"; saveButton.innerText = "Save";
saveButton.className = "mediumLink"; saveButton.className = "mediumLink popupElement";
saveButton.addEventListener("click", () => saveSponsorTimeEdit(index)); saveButton.addEventListener("click", () => saveSponsorTimeEdit(index));
let editButton = document.getElementById("sponsorTimeEditButton" + index); let editButton = document.getElementById("sponsorTimeEditButton" + index);
let sponsorTimesContainer = document.getElementById("sponsorTimesContainer"); let sponsorTimesContainer = document.getElementById("sponsorTimesContainer");
sponsorTimesContainer.removeChild(editButton); sponsorTimesContainer.replaceChild(saveButton, editButton);
sponsorTimesContainer.appendChild(saveButton); }
}
function saveSponsorTimeEdit(index) { function saveSponsorTimeEdit(index) {
let startTimeMinutes = document.getElementById("startTimeMinutes" + index); let startTimeMinutes = document.getElementById("startTimeMinutes" + index);
let startTimeSeconds = document.getElementById("startTimeSeconds" + index); let startTimeSeconds = document.getElementById("startTimeSeconds" + index);
@@ -512,10 +537,12 @@ function saveSponsorTimeEdit(index) {
chrome.storage.sync.set({[sponsorTimeKey]: sponsorTimes}); chrome.storage.sync.set({[sponsorTimeKey]: sponsorTimes});
displaySponsorTimes(); displaySponsorTimes();
}
//deletes the sponsor time submitted at an index showSubmitTimesIfNecessary();
function deleteSponsorTime(index) { }
//deletes the sponsor time submitted at an index
function deleteSponsorTime(index) {
//if it is not a complete sponsor time //if it is not a complete sponsor time
if (sponsorTimes[index].length < 2) { if (sponsorTimes[index].length < 2) {
chrome.tabs.query({ chrome.tabs.query({
@@ -558,9 +585,9 @@ function deleteSponsorTime(index) {
//hide submission section //hide submission section
document.getElementById("submissionSection").style.display = "none"; document.getElementById("submissionSection").style.display = "none";
} }
} }
function clearTimes() { function clearTimes() {
//send new sponsor time state to tab //send new sponsor time state to tab
if (sponsorTimes.length > 0) { if (sponsorTimes.length > 0) {
chrome.tabs.query({ chrome.tabs.query({
@@ -587,9 +614,9 @@ function clearTimes() {
document.getElementById("submissionSection").style.display = "none"; document.getElementById("submissionSection").style.display = "none";
resetStartTimeChosen(); resetStartTimeChosen();
} }
function submitTimes() { function submitTimes() {
//make info message say loading //make info message say loading
document.getElementById("submitTimesInfoMessage").innerText = "Loading..."; document.getElementById("submitTimesInfoMessage").innerText = "Loading...";
document.getElementById("submitTimesInfoMessageContainer").style.display = "unset"; document.getElementById("submitTimesInfoMessageContainer").style.display = "unset";
@@ -624,9 +651,9 @@ function submitTimes() {
} }
}); });
} }
} }
function showNoticeAgain() { function showNoticeAgain() {
chrome.storage.sync.set({"dontShowNoticeAgain": false}); chrome.storage.sync.set({"dontShowNoticeAgain": false});
chrome.tabs.query({ chrome.tabs.query({
@@ -639,9 +666,9 @@ function showNoticeAgain() {
}); });
SB.showNoticeAgain.style.display = "none"; SB.showNoticeAgain.style.display = "none";
} }
function hideVideoPlayerControls() { function hideVideoPlayerControls() {
chrome.storage.sync.set({"hideVideoPlayerControls": true}); chrome.storage.sync.set({"hideVideoPlayerControls": true});
chrome.tabs.query({ chrome.tabs.query({
@@ -656,9 +683,9 @@ function hideVideoPlayerControls() {
SB.hideVideoPlayerControls.style.display = "none"; SB.hideVideoPlayerControls.style.display = "none";
SB.showVideoPlayerControls.style.display = "unset"; SB.showVideoPlayerControls.style.display = "unset";
} }
function showVideoPlayerControls() { function showVideoPlayerControls() {
chrome.storage.sync.set({"hideVideoPlayerControls": false}); chrome.storage.sync.set({"hideVideoPlayerControls": false});
chrome.tabs.query({ chrome.tabs.query({
@@ -673,9 +700,9 @@ function showVideoPlayerControls() {
SB.hideVideoPlayerControls.style.display = "unset"; SB.hideVideoPlayerControls.style.display = "unset";
SB.showVideoPlayerControls.style.display = "none"; SB.showVideoPlayerControls.style.display = "none";
} }
function hideInfoButtonPlayerControls() { function hideInfoButtonPlayerControls() {
chrome.storage.sync.set({"hideInfoButtonPlayerControls": true}); chrome.storage.sync.set({"hideInfoButtonPlayerControls": true});
chrome.tabs.query({ chrome.tabs.query({
@@ -690,9 +717,9 @@ function hideInfoButtonPlayerControls() {
SB.hideInfoButtonPlayerControls.style.display = "none"; SB.hideInfoButtonPlayerControls.style.display = "none";
SB.showInfoButtonPlayerControls.style.display = "unset"; SB.showInfoButtonPlayerControls.style.display = "unset";
} }
function showInfoButtonPlayerControls() { function showInfoButtonPlayerControls() {
chrome.storage.sync.set({"hideInfoButtonPlayerControls": false}); chrome.storage.sync.set({"hideInfoButtonPlayerControls": false});
chrome.tabs.query({ chrome.tabs.query({
@@ -707,9 +734,9 @@ function showInfoButtonPlayerControls() {
SB.hideInfoButtonPlayerControls.style.display = "unset"; SB.hideInfoButtonPlayerControls.style.display = "unset";
SB.showInfoButtonPlayerControls.style.display = "none"; SB.showInfoButtonPlayerControls.style.display = "none";
} }
function hideDeleteButtonPlayerControls() { function hideDeleteButtonPlayerControls() {
chrome.storage.sync.set({"hideDeleteButtonPlayerControls": true}); chrome.storage.sync.set({"hideDeleteButtonPlayerControls": true});
chrome.tabs.query({ chrome.tabs.query({
@@ -724,9 +751,9 @@ function hideDeleteButtonPlayerControls() {
SB.hideDeleteButtonPlayerControls.style.display = "none"; SB.hideDeleteButtonPlayerControls.style.display = "none";
SB.showDeleteButtonPlayerControls.style.display = "unset"; SB.showDeleteButtonPlayerControls.style.display = "unset";
} }
function showDeleteButtonPlayerControls() { function showDeleteButtonPlayerControls() {
chrome.storage.sync.set({"hideDeleteButtonPlayerControls": false}); chrome.storage.sync.set({"hideDeleteButtonPlayerControls": false});
chrome.tabs.query({ chrome.tabs.query({
@@ -741,9 +768,9 @@ function showDeleteButtonPlayerControls() {
SB.hideDeleteButtonPlayerControls.style.display = "unset"; SB.hideDeleteButtonPlayerControls.style.display = "unset";
SB.showDeleteButtonPlayerControls.style.display = "none"; SB.showDeleteButtonPlayerControls.style.display = "none";
} }
function disableSponsorViewTracking() { function disableSponsorViewTracking() {
chrome.storage.sync.set({"trackViewCount": false}); chrome.storage.sync.set({"trackViewCount": false});
chrome.tabs.query({ chrome.tabs.query({
@@ -758,9 +785,9 @@ function disableSponsorViewTracking() {
SB.disableSponsorViewTracking.style.display = "none"; SB.disableSponsorViewTracking.style.display = "none";
SB.enableSponsorViewTracking.style.display = "unset"; SB.enableSponsorViewTracking.style.display = "unset";
} }
function enableSponsorViewTracking() { function enableSponsorViewTracking() {
chrome.storage.sync.set({"trackViewCount": true}); chrome.storage.sync.set({"trackViewCount": true});
chrome.tabs.query({ chrome.tabs.query({
@@ -775,26 +802,26 @@ function enableSponsorViewTracking() {
SB.enableSponsorViewTracking.style.display = "none"; SB.enableSponsorViewTracking.style.display = "none";
SB.disableSponsorViewTracking.style.display = "unset"; SB.disableSponsorViewTracking.style.display = "unset";
} }
function updateStartTimeChosen() { function updateStartTimeChosen() {
//update startTimeChosen variable //update startTimeChosen letiable
if (!startTimeChosen) { if (!startTimeChosen) {
startTimeChosen = true; startTimeChosen = true;
SB.sponsorStart.innerHTML = "Sponsorship Ends Now"; SB.sponsorStart.innerHTML = "Sponsorship Ends Now";
} else { } else {
resetStartTimeChosen(); resetStartTimeChosen();
} }
} }
//set it to false //set it to false
function resetStartTimeChosen() { function resetStartTimeChosen() {
startTimeChosen = false; startTimeChosen = false;
SB.sponsorStart.innerHTML = "Sponsorship Starts Now"; SB.sponsorStart.innerHTML = "Sponsorship Starts Now";
} }
//hides and shows the submit times button when needed //hides and shows the submit times button when needed
function showSubmitTimesIfNecessary() { function showSubmitTimesIfNecessary() {
//check if an end time has been specified for the latest sponsor time //check if an end time has been specified for the latest sponsor time
if (sponsorTimes.length > 0 && sponsorTimes[sponsorTimes.length - 1].length > 1) { if (sponsorTimes.length > 0 && sponsorTimes[sponsorTimes.length - 1].length > 1) {
//show submit times button //show submit times button
@@ -803,26 +830,26 @@ function showSubmitTimesIfNecessary() {
//hide submit times button //hide submit times button
document.getElementById("submitTimesContainer").style.display = "none"; document.getElementById("submitTimesContainer").style.display = "none";
} }
} }
//make the options div visisble //make the options div visisble
function openOptions() { function openOptions() {
document.getElementById("optionsButtonContainer").style.display = "none"; document.getElementById("optionsButtonContainer").style.display = "none";
document.getElementById("options").style.display = "unset"; document.getElementById("options").style.display = "unset";
} }
//this is not a YouTube video page //this is not a YouTube video page
function displayNoVideo() { function displayNoVideo() {
document.getElementById("loadingIndicator").innerHTML = "This probably isn't a YouTube tab, or you clicked too early. " + 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."; "If you know this is a YouTube tab, close this popup and open it again.";
} }
function reportAnIssue() { function reportAnIssue() {
document.getElementById("issueReporterContainer").style.display = "unset"; document.getElementById("issueReporterContainer").style.display = "unset";
SB.reportAnIssue.style.display = "none"; SB.reportAnIssue.style.display = "none";
} }
function addVoteMessage(message, UUID) { function addVoteMessage(message, UUID) {
let container = document.getElementById("sponsorTimesVoteButtonsContainer" + UUID); let container = document.getElementById("sponsorTimesVoteButtonsContainer" + UUID);
//remove all children //remove all children
while (container.firstChild) { while (container.firstChild) {
@@ -835,9 +862,9 @@ function addVoteMessage(message, UUID) {
thanksForVotingText.style.marginBottom = "0px"; thanksForVotingText.style.marginBottom = "0px";
container.appendChild(thanksForVotingText); container.appendChild(thanksForVotingText);
} }
function vote(type, UUID) { function vote(type, UUID) {
//add loading info //add loading info
addVoteMessage("Loading...", UUID) addVoteMessage("Loading...", UUID)
@@ -865,16 +892,16 @@ function vote(type, UUID) {
} }
} }
}); });
} }
function hideDiscordButton() { function hideDiscordButton() {
chrome.storage.sync.set({"hideDiscordLink": false}); chrome.storage.sync.set({"hideDiscordLink": false});
SB.discordButtonContainer.style.display = "none"; SB.discordButtonContainer.style.display = "none";
} }
//converts time in seconds to minutes:seconds //converts time in seconds to minutes:seconds
function getFormattedTime(seconds) { function getFormattedTime(seconds) {
let minutes = Math.floor(seconds / 60); let minutes = Math.floor(seconds / 60);
let secondsDisplay = Math.round(seconds - minutes * 60); let secondsDisplay = Math.round(seconds - minutes * 60);
if (secondsDisplay < 10) { if (secondsDisplay < 10) {
@@ -885,17 +912,17 @@ function getFormattedTime(seconds) {
let formatted = minutes+ ":" + secondsDisplay; let formatted = minutes+ ":" + secondsDisplay;
return formatted; return formatted;
} }
//converts time in seconds to minutes //converts time in seconds to minutes
function getTimeInMinutes(seconds) { function getTimeInMinutes(seconds) {
let minutes = Math.floor(seconds / 60); let minutes = Math.floor(seconds / 60);
return minutes; return minutes;
} }
//converts time in seconds to seconds past the last minute //converts time in seconds to seconds past the last minute
function getTimeInFormattedSeconds(seconds) { function getTimeInFormattedSeconds(seconds) {
let secondsFormatted = (seconds % 60).toFixed(3); let secondsFormatted = (seconds % 60).toFixed(3);
if (secondsFormatted < 10) { if (secondsFormatted < 10) {
@@ -903,9 +930,9 @@ function getTimeInFormattedSeconds(seconds) {
} }
return secondsFormatted; return secondsFormatted;
} }
function sendRequestToServer(type, address, callback) { function sendRequestToServer(type, address, callback) {
let xmlhttp = new XMLHttpRequest(); let xmlhttp = new XMLHttpRequest();
xmlhttp.open(type, serverAddress + address, true); xmlhttp.open(type, serverAddress + address, true);
@@ -922,11 +949,23 @@ function sendRequestToServer(type, address, callback) {
//submit this request //submit this request
xmlhttp.send(); xmlhttp.send();
} }
function getYouTubeVideoID(url) { // Returns with video id else returns false function getYouTubeVideoID(url) { // Returns with video id else returns false
var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/; var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/;
var match = url.match(regExp); var match = url.match(regExp);
var id = new URL(url).searchParams.get("v"); var id = new URL(url).searchParams.get("v");
return (match && match[7].length == 11) ? id : false; return (match && match[7].length == 11) ? id : false;
}
//end of function
} }
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();
}