diff options
author | Ajay Ramachandran <[email protected]> | 2021-07-04 16:12:41 -0400 |
---|---|---|
committer | Ajay Ramachandran <[email protected]> | 2021-07-04 16:12:41 -0400 |
commit | 7f8947dd0ae9ff66e5bb975d2d24aef7d633032f (patch) | |
tree | 5b5d7a356a39ccaa5d15b8595eeb2e80007a5093 | |
parent | 0ae34c960333a167c8ea2b6d27b066ba3f1c249e (diff) | |
download | SponsorBlock-7f8947dd0ae9ff66e5bb975d2d24aef7d633032f.tar.gz SponsorBlock-7f8947dd0ae9ff66e5bb975d2d24aef7d633032f.zip |
Add refresh segments button
-rw-r--r-- | manifest/manifest.json | 1 | ||||
-rw-r--r-- | public/_locales/en/messages.json | 3 | ||||
-rw-r--r-- | public/icons/refresh.svg | 1 | ||||
-rw-r--r-- | public/popup.css | 6 | ||||
-rw-r--r-- | public/popup.html | 3 | ||||
-rw-r--r-- | src/content.ts | 28 | ||||
-rw-r--r-- | src/messageTypes.ts | 3 | ||||
-rw-r--r-- | src/popup.ts | 14 |
8 files changed, 43 insertions, 16 deletions
diff --git a/manifest/manifest.json b/manifest/manifest.json index 134ed817..771562e4 100644 --- a/manifest/manifest.json +++ b/manifest/manifest.json @@ -40,6 +40,7 @@ "icons/help.svg", "icons/report.png", "icons/close.png", + "icons/refresh.svg", "icons/beep.ogg", "icons/PlayerInfoIconSponsorBlocker.svg", "icons/PlayerDeleteIconSponsorBlocker.svg", diff --git a/public/_locales/en/messages.json b/public/_locales/en/messages.json index e7275668..36ba71e1 100644 --- a/public/_locales/en/messages.json +++ b/public/_locales/en/messages.json @@ -85,6 +85,9 @@ "noVideoID": { "message": "No YouTube video found.\nIf this is incorrect, refresh the tab." }, + "refreshSegments": { + "message": "Refresh segments" + }, "success": { "message": "Success!" }, diff --git a/public/icons/refresh.svg b/public/icons/refresh.svg new file mode 100644 index 00000000..87a7e9a6 --- /dev/null +++ b/public/icons/refresh.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#FFFFFF"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"/></svg>
\ No newline at end of file diff --git a/public/popup.css b/public/popup.css index 891e4b84..0ccfb98d 100644 --- a/public/popup.css +++ b/public/popup.css @@ -259,7 +259,7 @@ background-color:#ec1c1c; align-items: center; } -#additionalButtons>button, button#setUsernameButton, #submitUsername { +.sbSlimButton, #additionalButtons>button, button#setUsernameButton, #submitUsername { background: none; border: none; color: white; @@ -321,12 +321,12 @@ label>p, #disableExtension>p, #usernameValue, #usernameElement > div > p,#sponso margin-right: 8px; } -#whitelistButton>label, #additionalButtons>button, div#setUsernameContainer { +#whitelistButton>label, #additionalButtons>button, div#setUsernameContainer>button { display: flex; flex-flow: row nowrap; } -#whitelistButton>label, #additionalButtons>button, div#setUsernameContainer>button { +.sbSlimButton, #whitelistButton>label, #additionalButtons>button, div#setUsernameContainer>button { cursor: pointer; } diff --git a/public/popup.html b/public/popup.html index 40d87b0e..466de0bd 100644 --- a/public/popup.html +++ b/public/popup.html @@ -18,6 +18,9 @@ <p id="loadingIndicator">__MSG_noVideoID__</p> <!-- If the video was found in the database --> <p id="videoFound"></p> + <button class="sbSlimButton" id="refreshSegmentsButton" title="__MSG_refreshSegments__"> + <img id="refreshSegments" src="/icons/refresh.svg"/> + </button> </div> <div id="issueReporterContainer"> <div id="issueReporterTimeButtons"></div> diff --git a/src/content.ts b/src/content.ts index c6adf03b..8f98edaa 100644 --- a/src/content.ts +++ b/src/content.ts @@ -178,6 +178,9 @@ function messageListener(request: Message, sender: unknown, sendResponse: (respo case "submitTimes": submitSponsorTimes(); break; + case "refreshSegments": + sponsorsLookup(sponsorVideoID, false); + break; } } @@ -209,6 +212,7 @@ function resetValues() { //reset sponsor times sponsorTimes = null; sponsorLookupRetries = 0; + sponsorSkipped = []; videoInfo = null; channelWhitelisted = false; @@ -569,7 +573,7 @@ function setupVideoListeners() { } } -async function sponsorsLookup(id: string) { +async function sponsorsLookup(id: string, keepOldSubmissions = true) { if (!video) refreshVideoAttachments(); //there is still no video here if (!video) { @@ -606,7 +610,7 @@ async function sponsorsLookup(id: string) { sponsorDataFound = true; // Check if any old submissions should be kept - if (sponsorTimes !== null) { + if (sponsorTimes !== null && keepOldSubmissions) { for (let i = 0; i < sponsorTimes.length; i++) { if (sponsorTimes[i].source === SponsorSourceType.Local) { // This is a user submission, keep it @@ -627,20 +631,19 @@ async function sponsorsLookup(id: string) { } } - for (const segment of oldSegments) { - const otherSegment = sponsorTimes.find((other) => segment.UUID === other.UUID); - if (otherSegment) { - // If they downvoted it, or changed the category, keep it - otherSegment.hidden = segment.hidden; - otherSegment.category = segment.category; + if (keepOldSubmissions) { + for (const segment of oldSegments) { + const otherSegment = sponsorTimes.find((other) => segment.UUID === other.UUID); + if (otherSegment) { + // If they downvoted it, or changed the category, keep it + otherSegment.hidden = segment.hidden; + otherSegment.category = segment.category; + } } } startSkipScheduleCheckingForStartSponsors(); - // Reset skip save - sponsorSkipped = []; - //update the preview bar //leave the type blank for now until categories are added if (lastPreviewBarUpdate == id || (lastPreviewBarUpdate == null && !isNaN(video.duration))) { @@ -1408,11 +1411,12 @@ function openInfoMenu() { const settings = <HTMLImageElement> popup.querySelector("#sbPopupIconSettings"); const edit = <HTMLImageElement> popup.querySelector("#sbPopupIconEdit"); const check = <HTMLImageElement> popup.querySelector("#sbPopupIconCheck"); + const refreshSegments = <HTMLImageElement> popup.querySelector("#refreshSegments"); 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"); - check.src = chrome.extension.getURL("icons/thumb.svg"); + refreshSegments.src = chrome.extension.getURL("icons/refresh.svg"); parentNode.insertBefore(popup, parentNode.firstChild); diff --git a/src/messageTypes.ts b/src/messageTypes.ts index 1c69388a..525ec513 100644 --- a/src/messageTypes.ts +++ b/src/messageTypes.ts @@ -16,7 +16,8 @@ interface DefaultMessage { | "getVideoID" | "getChannelID" | "isChannelWhitelisted" - | "submitTimes"; + | "submitTimes" + | "refreshSegments"; } interface BoolValueMessage { diff --git a/src/popup.ts b/src/popup.ts index ea752620..9efa790f 100644 --- a/src/popup.ts +++ b/src/popup.ts @@ -102,6 +102,7 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> { "videoFound", "sponsorMessageTimes", //"downloadedSponsorMessageTimes", + "refreshSegmentsButton", "whitelistButton", "sbDonate" ].forEach(id => PageElements[id] = document.getElementById(id)); @@ -131,6 +132,7 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> { PageElements.submitUsername.addEventListener("click", submitUsername); PageElements.optionsButton.addEventListener("click", openOptions); PageElements.helpButton.addEventListener("click", openHelp); + PageElements.refreshSegmentsButton.addEventListener("click", refreshSegments); /** If true, the content script is in the process of creating a new segment. */ let creatingSegment = false; @@ -676,6 +678,18 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> { }); } + function refreshSegments() { + messageHandler.query({ + active: true, + currentWindow: true + }, tabs => { + messageHandler.sendMessage( + tabs[0].id, + {message: 'refreshSegments'} + )} + ); + } + /** * Should skipping be disabled (visuals stay) */ |