From db2af83a3405dcfa47ff713405da47a63cae8aad Mon Sep 17 00:00:00 2001 From: Ajay Ramachandran Date: Mon, 19 Aug 2019 17:08:31 -0400 Subject: [PATCH] Added countdown to skip notice --- _locales/en/messages.json | 3 --- utils/skipNotice.js | 29 ++++++++++++++++++++++++++--- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 1759ba95..f09fe231 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -45,9 +45,6 @@ "noticeTitle": { "message": "Sponsor Skipped" }, - "noticeClosingMessage": { - "message": "closes in 7s" - }, "reportButtonTitle": { "message": "Report" }, diff --git a/utils/skipNotice.js b/utils/skipNotice.js index de09872c..52854c01 100644 --- a/utils/skipNotice.js +++ b/utils/skipNotice.js @@ -5,7 +5,10 @@ class SkipNotice { constructor(parent, UUID) { this.parent = parent; this.UUID = UUID; - + + //the countdown until this notice closes + this.countdownTime = 7; + //add notice let amountOfPreviousNotices = document.getElementsByClassName("sponsorSkipNotice").length; @@ -50,7 +53,8 @@ class SkipNotice { closeButtonContainer.style.top = "11px"; let timeLeft = document.createElement("span"); - timeLeft.innerText = chrome.i18n.getMessage("noticeClosingMessage"); + timeLeft.id = "sponsorSkipNoticeTimeLeft" + this.UUID; + timeLeft.innerText = this.countdownTime + "s"; timeLeft.className = "sponsorSkipObject sponsorSkipNoticeTimeLeft"; let hideButton = document.createElement("img"); @@ -148,7 +152,26 @@ class SkipNotice { referenceNode.prepend(noticeElement); //add closing listener - setTimeout(this.close.bind(this), 7000); + this.countdownInterval = setInterval(this.countdown.bind(this), 1000); + } + + //called every second to lower the countdown before hiding the notice + countdown() { + this.countdownTime--; + + if (this.countdownTime <= 0) { + //remove this from setInterval + clearInterval(this.countdownInterval); + + //time to close this notice + this.close(); + + return; + } + + //update the timer display + let timeLeft = document.getElementById("sponsorSkipNoticeTimeLeft" + this.UUID); + timeLeft.innerText = this.countdownTime + "s"; } afterDownvote() {