diff --git a/manifest/manifest.json b/manifest/manifest.json index 771562e4..a8229541 100644 --- a/manifest/manifest.json +++ b/manifest/manifest.json @@ -41,6 +41,7 @@ "icons/report.png", "icons/close.png", "icons/refresh.svg", + "icons/lock.svg", "icons/beep.ogg", "icons/PlayerInfoIconSponsorBlocker.svg", "icons/PlayerDeleteIconSponsorBlocker.svg", diff --git a/public/icons/lock.svg b/public/icons/lock.svg new file mode 100644 index 00000000..95a257b2 --- /dev/null +++ b/public/icons/lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/popup.html b/public/popup.html index 466de0bd..9cc97612 100644 --- a/public/popup.html +++ b/public/popup.html @@ -21,6 +21,9 @@ +
diff --git a/src/content.ts b/src/content.ts index 8f98edaa..12a2a9f2 100644 --- a/src/content.ts +++ b/src/content.ts @@ -1412,11 +1412,13 @@ function openInfoMenu() { const edit = popup.querySelector("#sbPopupIconEdit"); const check = popup.querySelector("#sbPopupIconCheck"); const refreshSegments = popup.querySelector("#refreshSegments"); + const lockSegments = popup.querySelector("#lockSegments"); logo.src = chrome.extension.getURL("icons/IconSponsorBlocker256px.png"); settings.src = chrome.extension.getURL("icons/settings.svg"); edit.src = chrome.extension.getURL("icons/pencil.svg"); check.src = chrome.extension.getURL("icons/check.svg"); refreshSegments.src = chrome.extension.getURL("icons/refresh.svg"); + lockSegments.src = chrome.extension.getURL("icons/lock.svg"); parentNode.insertBefore(popup, parentNode.firstChild); diff --git a/src/popup.ts b/src/popup.ts index 9efa790f..e1dac07b 100644 --- a/src/popup.ts +++ b/src/popup.ts @@ -103,6 +103,7 @@ async function runThePopup(messageListener?: MessageListener): Promise { "sponsorMessageTimes", //"downloadedSponsorMessageTimes", "refreshSegmentsButton", + "lockSegmentsButton", "whitelistButton", "sbDonate" ].forEach(id => PageElements[id] = document.getElementById(id)); @@ -133,6 +134,7 @@ async function runThePopup(messageListener?: MessageListener): Promise { PageElements.optionsButton.addEventListener("click", openOptions); PageElements.helpButton.addEventListener("click", openHelp); PageElements.refreshSegmentsButton.addEventListener("click", refreshSegments); + PageElements.lockSegmentsButton.addEventListener("click", lockSegments); /** If true, the content script is in the process of creating a new segment. */ let creatingSegment = false; @@ -158,53 +160,42 @@ async function runThePopup(messageListener?: MessageListener): Promise { PageElements.showNoticeAgain.style.display = "unset"; } - utils.sendRequestToServer("GET", "/api/getUsername?userID=" + Config.config.userID, (res) => { - if (res.status === 200) { - PageElements.usernameValue.innerText = JSON.parse(res.responseText).userName - } - }) + const userInfoRes = await utils.asyncRequestToServer("GET", "/api/userInfo?userID=" + Config.config.userID); + if (userInfoRes.ok) { + const userInfo = JSON.parse(userInfoRes.responseText); - //get the amount of times this user has contributed and display it to thank them - if (Config.config.sponsorTimesContributed != undefined) { - PageElements.sponsorTimesContributionsDisplay.innerText = Config.config.sponsorTimesContributed.toLocaleString(); - PageElements.sponsorTimesContributionsContainer.classList.remove("hidden"); + if (userInfo.vip) PageElements.lockSegmentsButton.classList.remove("hidden"); - //get the userID - const userID = Config.config.userID; - if (userID != undefined) { - //there are probably some views on these submissions then - //get the amount of views from the sponsors submitted - utils.sendRequestToServer("GET", "/api/getViewsForUser?userID=" + userID, function(response) { - if (response.status == 200) { - const viewCount = JSON.parse(response.responseText).viewCount; - if (viewCount != 0) { - if (viewCount > 1) { - PageElements.sponsorTimesViewsDisplayEndWord.innerText = chrome.i18n.getMessage("Segments"); - } else { - PageElements.sponsorTimesViewsDisplayEndWord.innerText = chrome.i18n.getMessage("Segment"); - } + PageElements.usernameValue.innerText = userInfo.userName; - PageElements.sponsorTimesViewsDisplay.innerText = viewCount.toLocaleString(); - PageElements.sponsorTimesViewsContainer.style.display = "unset"; - } + //get the amount of times this user has contributed and display it to thank them + if (Config.config.sponsorTimesContributed != undefined) { + PageElements.sponsorTimesContributionsDisplay.innerText = Config.config.sponsorTimesContributed.toLocaleString(); + PageElements.sponsorTimesContributionsContainer.classList.remove("hidden"); + + //get the userID + const viewCount = userInfo.viewCount; + if (viewCount != 0) { + if (viewCount > 1) { + PageElements.sponsorTimesViewsDisplayEndWord.innerText = chrome.i18n.getMessage("Segments"); + } else { + PageElements.sponsorTimesViewsDisplayEndWord.innerText = chrome.i18n.getMessage("Segment"); } - }); - //get this time in minutes - utils.sendRequestToServer("GET", "/api/getSavedTimeForUser?userID=" + userID, function(response) { - if (response.status == 200) { - const minutesSaved = JSON.parse(response.responseText).timeSaved; - if (minutesSaved != 0) { - if (minutesSaved != 1) { - PageElements.sponsorTimesOthersTimeSavedEndWord.innerText = chrome.i18n.getMessage("minsLower"); - } else { - PageElements.sponsorTimesOthersTimeSavedEndWord.innerText = chrome.i18n.getMessage("minLower"); - } + PageElements.sponsorTimesViewsDisplay.innerText = viewCount.toLocaleString(); + PageElements.sponsorTimesViewsContainer.style.display = "unset"; + } - PageElements.sponsorTimesOthersTimeSavedDisplay.innerText = getFormattedHours(minutesSaved); - } + const minutesSaved = userInfo.minutesSaved; + if (minutesSaved != 0) { + if (minutesSaved != 1) { + PageElements.sponsorTimesOthersTimeSavedEndWord.innerText = chrome.i18n.getMessage("minsLower"); + } else { + PageElements.sponsorTimesOthersTimeSavedEndWord.innerText = chrome.i18n.getMessage("minLower"); } - }); + + PageElements.sponsorTimesOthersTimeSavedDisplay.innerText = getFormattedHours(minutesSaved); + } } } @@ -690,6 +681,10 @@ async function runThePopup(messageListener?: MessageListener): Promise { ); } + function lockSegments() { + alert("lock"); + } + /** * Should skipping be disabled (visuals stay) */