Made the notice stay open after an unskip and allow to reskip.

The time remaining of the popup becomes the time remaining of the sponsor.
This commit is contained in:
Ajay Ramachandran
2019-08-19 19:07:14 -04:00
parent 50f929c11a
commit 19802a7a31
3 changed files with 63 additions and 8 deletions

View File

@@ -69,9 +69,12 @@
"hitGoBack": { "hitGoBack": {
"message": "Hit unskip to get to where you came from." "message": "Hit unskip to get to where you came from."
}, },
"goBack": { "unskip": {
"message": "Unskip" "message": "Unskip"
}, },
"reskip": {
"message": "Reskip"
},
"paused": { "paused": {
"message": "Paused" "message": "Paused"
}, },

View File

@@ -515,12 +515,17 @@ function skipToTime(v, index, sponsorTimes, openNotice) {
} }
} }
function goBackToPreviousTime(sponsorTime) { function unskipSponsorTime(UUID) {
if (sponsorTimes != null) { if (sponsorTimes != null) {
//add a tiny bit of time to make sure it is not skipped again //add a tiny bit of time to make sure it is not skipped again
v.currentTime = sponsorTimes[UUIDs.indexOf(sponsorTime.UUID)][0] + 0.001; v.currentTime = sponsorTimes[UUIDs.indexOf(UUID)][0] + 0.001;
}
}
sponsorTime.closeSkipNotice(); function reskipSponsorTime(UUID) {
if (sponsorTimes != null) {
//add a tiny bit of time to make sure it is not skipped again
v.currentTime = sponsorTimes[UUIDs.indexOf(UUID)][1];
} }
} }

View File

@@ -6,11 +6,15 @@ class SkipNotice {
this.parent = parent; this.parent = parent;
this.UUID = UUID; this.UUID = UUID;
this.maxCountdownTime = () => 4;
//the countdown until this notice closes //the countdown until this notice closes
this.countdownTime = 4; this.countdownTime = this.maxCountdownTime();
//the id for the setInterval running the countdown //the id for the setInterval running the countdown
this.countdownInterval = -1; this.countdownInterval = -1;
//the unskip button's callback
this.unskipCallback = this.unskip.bind(this);
//add notice //add notice
let amountOfPreviousNotices = document.getElementsByClassName("sponsorSkipNotice").length; let amountOfPreviousNotices = document.getElementsByClassName("sponsorSkipNotice").length;
@@ -111,9 +115,10 @@ class SkipNotice {
unskipContainer.className = "sponsorSkipNoticeUnskipSection"; unskipContainer.className = "sponsorSkipNoticeUnskipSection";
let unskipButton = document.createElement("button"); let unskipButton = document.createElement("button");
unskipButton.innerText = chrome.i18n.getMessage("goBack"); unskipButton.id = "sponsorSkipUnskipButton" + this.UUID;
unskipButton.innerText = chrome.i18n.getMessage("unskip");
unskipButton.className = "sponsorSkipObject sponsorSkipNoticeButton"; unskipButton.className = "sponsorSkipObject sponsorSkipNoticeButton";
unskipButton.addEventListener("click", () => goBackToPreviousTime(this)); unskipButton.addEventListener("click", this.unskipCallback);
unskipButton.style.marginLeft = "4px"; unskipButton.style.marginLeft = "4px";
@@ -190,7 +195,7 @@ class SkipNotice {
this.countdownInterval = -1; this.countdownInterval = -1;
//reset countdown //reset countdown
this.countdownTime = 4; this.countdownTime = this.maxCountdownTime();
//inform the user //inform the user
let timeLeft = document.getElementById("sponsorSkipNoticeTimeLeft" + this.UUID); let timeLeft = document.getElementById("sponsorSkipNoticeTimeLeft" + this.UUID);
@@ -217,6 +222,48 @@ class SkipNotice {
timeLeft.innerText = this.countdownTime + "s"; timeLeft.innerText = this.countdownTime + "s";
} }
unskip() {
unskipSponsorTime(this.UUID);
//change unskip button to a reskip button
let unskipButton = document.getElementById("sponsorSkipUnskipButton" + this.UUID);
unskipButton.innerText = chrome.i18n.getMessage("reskip");
unskipButton.removeEventListener("click", this.unskipCallback);
//setup new callback
this.unskipCallback = this.reskip.bind(this);
unskipButton.addEventListener("click", this.unskipCallback);
//change max duration to however much of the sponsor is left
this.maxCountdownTime = function() {
let sponsorTime = sponsorTimes[UUIDs.indexOf(this.UUID)];
let duration = Math.round(sponsorTime[1] - v.currentTime);
return Math.max(duration, 4);
};
this.countdownTime = this.maxCountdownTime();
this.updateTimerDisplay();
}
reskip() {
reskipSponsorTime(this.UUID);
//change unskip button to a reskip button
let unskipButton = document.getElementById("sponsorSkipUnskipButton" + this.UUID);
unskipButton.innerText = chrome.i18n.getMessage("unskip");
unskipButton.removeEventListener("click", this.unskipCallback);
//setup new callback
this.unskipCallback = this.unskip.bind(this);
unskipButton.addEventListener("click", this.unskipCallback);
//reset duration
this.maxCountdownTime = () => 4;
this.countdownTime = this.maxCountdownTime();
this.updateTimerDisplay();
}
afterDownvote() { afterDownvote() {
this.addVoteButtonInfo(chrome.i18n.getMessage("Voted")); this.addVoteButtonInfo(chrome.i18n.getMessage("Voted"));
this.addNoticeInfoMessage(chrome.i18n.getMessage("hitGoBack")); this.addNoticeInfoMessage(chrome.i18n.getMessage("hitGoBack"));