aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAjay Ramachandran <[email protected]>2021-07-04 16:12:41 -0400
committerAjay Ramachandran <[email protected]>2021-07-04 16:12:41 -0400
commit7f8947dd0ae9ff66e5bb975d2d24aef7d633032f (patch)
tree5b5d7a356a39ccaa5d15b8595eeb2e80007a5093
parent0ae34c960333a167c8ea2b6d27b066ba3f1c249e (diff)
downloadSponsorBlock-7f8947dd0ae9ff66e5bb975d2d24aef7d633032f.tar.gz
SponsorBlock-7f8947dd0ae9ff66e5bb975d2d24aef7d633032f.zip
Add refresh segments button
-rw-r--r--manifest/manifest.json1
-rw-r--r--public/_locales/en/messages.json3
-rw-r--r--public/icons/refresh.svg1
-rw-r--r--public/popup.css6
-rw-r--r--public/popup.html3
-rw-r--r--src/content.ts28
-rw-r--r--src/messageTypes.ts3
-rw-r--r--src/popup.ts14
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)
*/