Added ability to disable auto skip.

Resolves https://github.com/ajayyy/SponsorBlock/issues/131 and https://github.com/ajayyy/SponsorBlock/issues/162
This commit is contained in:
Ajay Ramachandran
2019-12-02 23:58:29 -05:00
parent 381c11ed99
commit cd5207f816
5 changed files with 126 additions and 13 deletions

View File

@@ -275,5 +275,20 @@
}, },
"errorCode": { "errorCode": {
"message": "Error Code: " "message": "Error Code: "
},
"noticeTitleNotSkipped": {
"message": "Skip Sponsor?"
},
"skip": {
"message": "Skip"
},
"disableAutoSkip": {
"message": "Disable Auto Skip"
},
"enableAutoSkip": {
"message": "Enable Auto Skip"
},
"autoSkipDescription": {
"message": "Auto skip will skip sponsors for you. If disabled, a notice will appear asking if you'd like to skip."
} }
} }

View File

@@ -76,6 +76,15 @@ chrome.storage.sync.get(["disableSkipping"], function(result) {
} }
}); });
//should skips be manual
var disableAutoSkip = false;
chrome.storage.sync.get(["disableAutoSkip"], function(result) {
let disableAutoSkipStorage = result.disableAutoSkip;
if (disableAutoSkipStorage != undefined) {
disableAutoSkip = disableAutoSkipStorage;
}
});
//should view counts be tracked //should view counts be tracked
var trackViewCount = false; var trackViewCount = false;
chrome.storage.sync.get(["trackViewCount"], function(result) { chrome.storage.sync.get(["trackViewCount"], function(result) {
@@ -606,7 +615,9 @@ function checkIfTimeToSkip(currentVideoTime, startTime, endTime) {
//skip fromt he start time to the end time for a certain index sponsor time //skip fromt he start time to the end time for a certain index sponsor time
function skipToTime(v, index, sponsorTimes, openNotice) { function skipToTime(v, index, sponsorTimes, openNotice) {
if (!disableAutoSkip) {
v.currentTime = sponsorTimes[index][1]; v.currentTime = sponsorTimes[index][1];
}
lastSponsorTimeSkipped = sponsorTimes[index][0]; lastSponsorTimeSkipped = sponsorTimes[index][0];
@@ -616,7 +627,7 @@ function skipToTime(v, index, sponsorTimes, openNotice) {
if (openNotice) { if (openNotice) {
//send out the message saying that a sponsor message was skipped //send out the message saying that a sponsor message was skipped
if (!dontShowNotice) { if (!dontShowNotice) {
let skipNotice = new SkipNotice(this, currentUUID); let skipNotice = new SkipNotice(this, currentUUID, disableAutoSkip);
if (dontShowNoticeOld) { if (dontShowNoticeOld) {
//show why this notice is showing //show why this notice is showing

View File

@@ -176,6 +176,16 @@
<h3>__MSG_Options__</h3> <h3>__MSG_Options__</h3>
<button id="disableAutoSkip" class="warningButton popupElement">__MSG_disableAutoSkip__</button>
<button id="enableAutoSkip" style="display: none" class="warningButton popupElement">__MSG_enableAutoSkip__</button>
<br/>
<sub class="popupElement">
__MSG_autoSkipDescription__
</sub>
<br/>
<br/>
<span id="keybindButtons"> <span id="keybindButtons">
<button id="setStartSponsorKeybind" class="warningButton popupElement">__MSG_setStartSponsorShortcut__</button> <button id="setStartSponsorKeybind" class="warningButton popupElement">__MSG_setStartSponsorShortcut__</button>
<br/> <br/>

View File

@@ -34,7 +34,10 @@ function runThePopup() {
// More controls // More controls
"clearTimes", "clearTimes",
"submitTimes", "submitTimes",
// options
"showNoticeAgain", "showNoticeAgain",
"disableAutoSkip",
"enableAutoSkip",
"hideVideoPlayerControls", "hideVideoPlayerControls",
"showVideoPlayerControls", "showVideoPlayerControls",
"hideInfoButtonPlayerControls", "hideInfoButtonPlayerControls",
@@ -89,6 +92,8 @@ function runThePopup() {
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.disableAutoSkip.addEventListener("click", () => setAutoSkip(true));
SB.enableAutoSkip.addEventListener("click", () => setAutoSkip(false));
SB.setStartSponsorKeybind.addEventListener("click", () => setKeybind(true)); SB.setStartSponsorKeybind.addEventListener("click", () => setKeybind(true));
SB.setSubmitKeybind.addEventListener("click", () => setKeybind(false)); SB.setSubmitKeybind.addEventListener("click", () => setKeybind(false));
SB.hideVideoPlayerControls.addEventListener("click", hideVideoPlayerControls); SB.hideVideoPlayerControls.addEventListener("click", hideVideoPlayerControls);
@@ -158,6 +163,15 @@ function runThePopup() {
} }
}); });
//show proper auto skip option
chrome.storage.sync.get(["disableAutoSkip"], function(result) {
let disableAutoSkip = result.disableAutoSkip;
if (disableAutoSkip != undefined && disableAutoSkip) {
SB.disableAutoSkip.style.display = "none";
SB.enableAutoSkip.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;
@@ -860,6 +874,21 @@ function runThePopup() {
SB.showNoticeAgain.style.display = "none"; SB.showNoticeAgain.style.display = "none";
} }
function setAutoSkip(value) {
chrome.storage.sync.set({"disableAutoSkip": value});
if (value) {
// If it isn't shown, they can't manually skip
showNoticeAgain();
SB.disableAutoSkip.style.display = "none";
SB.enableAutoSkip.style.display = "unset";
} else {
SB.enableAutoSkip.style.display = "none";
SB.disableAutoSkip.style.display = "unset";
}
}
function hideVideoPlayerControls() { function hideVideoPlayerControls() {
chrome.storage.sync.set({"hideVideoPlayerControls": true}); chrome.storage.sync.set({"hideVideoPlayerControls": true});

View File

@@ -1,10 +1,25 @@
'use strict'; 'use strict';
//The notice that tells the user that a sponsor was just skipped /**
* The notice that tells the user that a sponsor was just skipped
*/
class SkipNotice { class SkipNotice {
constructor(parent, UUID) { /**
* @param {HTMLElement} parent
* @param {String} UUID
* @param {String} noticeTitle
* @param {boolean} manualSkip
*/
constructor(parent, UUID, manualSkip = false) {
this.parent = parent; this.parent = parent;
this.UUID = UUID; this.UUID = UUID;
this.manualSkip = manualSkip;
let noticeTitle = chrome.i18n.getMessage("noticeTitle");
if (manualSkip) {
noticeTitle = chrome.i18n.getMessage("noticeTitleNotSkipped");
}
this.maxCountdownTime = () => 4; this.maxCountdownTime = () => 4;
//the countdown until this notice closes //the countdown until this notice closes
@@ -54,7 +69,7 @@ class SkipNotice {
noticeMessage.id = "sponsorSkipMessage" + this.idSuffix; noticeMessage.id = "sponsorSkipMessage" + this.idSuffix;
noticeMessage.classList.add("sponsorSkipMessage"); noticeMessage.classList.add("sponsorSkipMessage");
noticeMessage.classList.add("sponsorSkipObject"); noticeMessage.classList.add("sponsorSkipObject");
noticeMessage.innerText = chrome.i18n.getMessage("noticeTitle"); noticeMessage.innerText = noticeTitle;
//create the first column //create the first column
logoColumn.appendChild(logoElement); logoColumn.appendChild(logoElement);
@@ -136,7 +151,10 @@ class SkipNotice {
dontShowAgainButton.className = "sponsorSkipObject sponsorSkipNoticeButton sponsorSkipNoticeRightButton"; dontShowAgainButton.className = "sponsorSkipObject sponsorSkipNoticeButton sponsorSkipNoticeRightButton";
dontShowAgainButton.addEventListener("click", dontShowNoticeAgain); dontShowAgainButton.addEventListener("click", dontShowNoticeAgain);
// Don't let them hide it if manually skipping
if (!this.manualSkip) {
dontshowContainer.appendChild(dontShowAgainButton); dontshowContainer.appendChild(dontShowAgainButton);
}
//add to row //add to row
secondRow.appendChild(voteButtonsContainer); secondRow.appendChild(voteButtonsContainer);
@@ -165,6 +183,10 @@ class SkipNotice {
referenceNode.prepend(noticeElement); referenceNode.prepend(noticeElement);
if (manualSkip) {
this.unskippedMode(chrome.i18n.getMessage("skip"));
}
this.startCountdown(); this.startCountdown();
} }
@@ -228,10 +250,13 @@ class SkipNotice {
unskip() { unskip() {
unskipSponsorTime(this.UUID); unskipSponsorTime(this.UUID);
this.unskippedMode(chrome.i18n.getMessage("reskip"));
}
/** Sets up notice to be not skipped yet */
unskippedMode(buttonText) {
//change unskip button to a reskip button //change unskip button to a reskip button
let unskipButton = document.getElementById("sponsorSkipUnskipButton" + this.idSuffix); let unskipButton = this.changeUnskipButton(buttonText);
unskipButton.innerText = chrome.i18n.getMessage("reskip");
unskipButton.removeEventListener("click", this.unskipCallback);
//setup new callback //setup new callback
this.unskipCallback = this.reskip.bind(this); this.unskipCallback = this.reskip.bind(this);
@@ -252,10 +277,8 @@ class SkipNotice {
reskip() { reskip() {
reskipSponsorTime(this.UUID); reskipSponsorTime(this.UUID);
//change unskip button to a reskip button //change reskip button to a unskip button
let unskipButton = document.getElementById("sponsorSkipUnskipButton" + this.idSuffix); let unskipButton = this.changeUnskipButton(chrome.i18n.getMessage("unskip"));
unskipButton.innerText = chrome.i18n.getMessage("unskip");
unskipButton.removeEventListener("click", this.unskipCallback);
//setup new callback //setup new callback
this.unskipCallback = this.unskip.bind(this); this.unskipCallback = this.unskip.bind(this);
@@ -265,6 +288,25 @@ class SkipNotice {
this.maxCountdownTime = () => 4; this.maxCountdownTime = () => 4;
this.countdownTime = this.maxCountdownTime(); this.countdownTime = this.maxCountdownTime();
this.updateTimerDisplay(); this.updateTimerDisplay();
// See if the title should be changed
if (this.manualSkip) {
this.changeNoticeTitle(chrome.i18n.getMessage("noticeTitle"));
}
}
/**
* Changes the text on the reskip button
*
* @param {string} text
* @returns {HTMLElement} unskipButton
*/
changeUnskipButton(text) {
let unskipButton = document.getElementById("sponsorSkipUnskipButton" + this.idSuffix);
unskipButton.innerText = text;
unskipButton.removeEventListener("click", this.unskipCallback);
return unskipButton;
} }
afterDownvote() { afterDownvote() {
@@ -294,6 +336,12 @@ class SkipNotice {
} }
} }
changeNoticeTitle(title) {
let noticeElement = document.getElementById("sponsorSkipMessage" + this.idSuffix);
noticeElement.innerText = title;
}
addNoticeInfoMessage(message, message2) { addNoticeInfoMessage(message, message2) {
let previousInfoMessage = document.getElementById("sponsorTimesInfoMessage" + this.idSuffix); let previousInfoMessage = document.getElementById("sponsorTimesInfoMessage" + this.idSuffix);
if (previousInfoMessage != null) { if (previousInfoMessage != null) {