From abe14bfa6764a065ee7d4faeb05f9731dacc4ad6 Mon Sep 17 00:00:00 2001 From: HanYaodong Date: Fri, 16 Feb 2024 19:45:44 +0800 Subject: [PATCH] Merge SB v5.5.5 into bili commit 9d04482d190dcc54ce62d6be97cb2f6e6950fc5b Author: Ajay Date: Tue Feb 13 22:35:44 2024 -0500 bump version commit 7c661f8e67488ded17a406940a9bec0f948bd154 Author: Ajay Date: Tue Feb 13 22:33:11 2024 -0500 update translations commit 0b7a2fd197a2b961f3a7a2c00819f2c4022bbcc0 Author: Ajay Date: Tue Feb 13 22:32:37 2024 -0500 Fix adding custom Invidious instances on Firefox Fixes #815 commit 3382d8a5006430d248763dbaa93b2183367a5f76 Author: Ajay Date: Tue Feb 13 21:52:10 2024 -0500 Fix chapter names not appearing commit 5d871d5fe76217e3f962ec464bb7d8a84d426056 Author: Ajay Date: Tue Feb 13 21:32:23 2024 -0500 Fix hidden mute segments sometimes still muting commit b7c5737a953959d1f31e881aa5ebe12f55dffb67 Merge: e0fe0fad 0cca1c35 Author: Ajay Ramachandran Date: Fri Feb 2 19:17:14 2024 -0500 Merge pull request #1967 from HanYaodong/dev Fix license info in README commit 0cca1c3566862bcefb7c82eaf6f2b22008ed6404 Author: HanYaodong Date: Fri Feb 2 19:31:22 2024 +0800 Fix license info in README commit e0fe0fad671364cfb94df3bde5a9a17b23b25003 Author: Ajay Date: Thu Feb 1 13:31:19 2024 -0500 Don't close submission menu if submission didn't go through Fxies submission menu closing for warning about previewing a segment commit c0bc068a18e0423f69a987c5bcf37bd5b42f1ad7 Author: Ajay Date: Wed Jan 31 19:06:16 2024 -0500 Handle exceptions for voting Maybe fixes #1961 commit 7cb413db15c89e678785f1ded3f9fdf2ff07f47b Author: Ajay Date: Wed Jan 31 18:58:06 2024 -0500 Don't display preview bar while scrubbing on mobile Should help with #1962 --- src/background.ts | 50 ++++++++++++-------- src/components/SubmissionNoticeComponent.tsx | 10 ++-- src/content.ts | 15 ++++-- src/render/SubmissionNotice.tsx | 4 +- 4 files changed, 48 insertions(+), 31 deletions(-) diff --git a/src/background.ts b/src/background.ts index 727de34c..55236cec 100644 --- a/src/background.ts +++ b/src/background.ts @@ -145,8 +145,8 @@ async function registerFirefoxContentScript(options: Registration) { ids: [options.id] }).catch(() => []); - if (existingRegistrations.length > 0 - && existingRegistrations[0].matches.every((match) => options.matches.includes(match))) { + if (existingRegistrations && existingRegistrations.length > 0 + && options.matches.every((match) => existingRegistrations[0].matches.includes(match))) { // No need to register another script, already registered return; } @@ -207,27 +207,35 @@ async function submitVote(type: number, UUID: string, category: string) { const typeSection = (type !== undefined) ? "&type=" + type : "&category=" + category; - //publish this vote - const response = await asyncRequestToServer("POST", "/api/voteOnSponsorTime?UUID=" + UUID + "&userID=" + userID + typeSection); - - if (response.ok) { - return { - successType: 1, - responseText: await response.text() - }; - } else if (response.status == 405) { - //duplicate vote - return { - successType: 0, - statusCode: response.status, - responseText: await response.text() - }; - } else { - //error while connect + try { + const response = await asyncRequestToServer("POST", "/api/voteOnSponsorTime?UUID=" + UUID + "&userID=" + userID + typeSection); + + if (response.ok) { + return { + successType: 1, + responseText: await response.text() + }; + } else if (response.status == 405) { + //duplicate vote + return { + successType: 0, + statusCode: response.status, + responseText: await response.text() + }; + } else { + //error while connect + return { + successType: -1, + statusCode: response.status, + responseText: await response.text() + }; + } + } catch (e) { + console.error(e); return { successType: -1, - statusCode: response.status, - responseText: await response.text() + statusCode: -1, + responseText: "" }; } } diff --git a/src/components/SubmissionNoticeComponent.tsx b/src/components/SubmissionNoticeComponent.tsx index 7ddc3e0e..2cf394f1 100644 --- a/src/components/SubmissionNoticeComponent.tsx +++ b/src/components/SubmissionNoticeComponent.tsx @@ -14,7 +14,7 @@ export interface SubmissionNoticeProps { // Contains functions and variables from the content script needed by the skip notice contentContainer: ContentContainer; - callback: () => unknown; + callback: () => Promise; closeListener: () => void; } @@ -239,9 +239,11 @@ class SubmissionNoticeComponent extends React.Component { + if (success) { + this.cancel(); + } + }); } sortSegments(): void { diff --git a/src/content.ts b/src/content.ts index 113dcb95..4079018b 100644 --- a/src/content.ts +++ b/src/content.ts @@ -674,6 +674,7 @@ function getVirtualTime(): number { function inMuteSegment(currentTime: number, includeOverlap: boolean): boolean { const checkFunction = (segment) => segment.actionType === ActionType.Mute + && segment.hidden === SponsorHideType.Visible && segment.segment[0] <= currentTime && (segment.segment[1] > currentTime || (includeOverlap && segment.segment[1] + 0.02 > currentTime)); return sponsorTimes?.some(checkFunction) || sponsorTimesSubmitting.some(checkFunction); @@ -2123,13 +2124,13 @@ function submitSegments() { //send the message to the background js //called after all the checks have been made that it's okay to do so -async function sendSubmitMessage() { +async function sendSubmitMessage(): Promise { // check if all segments are full video const onlyFullVideo = sponsorTimesSubmitting.every((segment) => segment.actionType === ActionType.Full); // Block if submitting on a running livestream or premiere if (!onlyFullVideo && (getIsLivePremiere() || isVisible(document.querySelector(".ytp-live-badge")))) { alert(chrome.i18n.getMessage("liveOrPremiere")); - return; + return false; } if (!previewedSegment @@ -2137,7 +2138,7 @@ async function sendSubmitMessage() { [ActionType.Full, ActionType.Poi].includes(segment.actionType) || segment.segment[1] >= getVideo()?.duration)) { alert(`${chrome.i18n.getMessage("previewSegmentRequired")} ${keybindToString(Config.config.previewKeybind)}`); - return; + return false; } // Add loading animation @@ -2163,7 +2164,7 @@ async function sendSubmitMessage() { const confirmShort = chrome.i18n.getMessage("shortCheck") + "\n\n" + getSegmentsMessage(sponsorTimesSubmitting); - if(!confirm(confirmShort)) return; + if(!confirm(confirmShort)) return false; } } } @@ -2213,6 +2214,8 @@ async function sendSubmitMessage() { if (fullVideoSegment) { categoryPill?.setSegment(fullVideoSegment); } + + return true; } else { // Show that the upload failed playerButtons.submit.button.style.animation = "unset"; @@ -2224,6 +2227,8 @@ async function sendSubmitMessage() { alert(getErrorMessage(response.status, response.responseText)); } } + + return false; } //get the message that visually displays the video times @@ -2249,6 +2254,8 @@ function getSegmentsMessage(sponsorTimes: SponsorTime[]): string { } function updateActiveSegment(currentTime: number): void { + previewBar?.updateChapterText(sponsorTimes, sponsorTimesSubmitting, currentTime); + chrome.runtime.sendMessage({ message: "time", time: currentTime diff --git a/src/render/SubmissionNotice.tsx b/src/render/SubmissionNotice.tsx index 5e9fbfbd..c0159cc0 100644 --- a/src/render/SubmissionNotice.tsx +++ b/src/render/SubmissionNotice.tsx @@ -11,7 +11,7 @@ class SubmissionNotice { // Contains functions and variables from the content script needed by the skip notice contentContainer: () => unknown; - callback: () => unknown; + callback: () => Promise; noticeRef: React.MutableRefObject; @@ -19,7 +19,7 @@ class SubmissionNotice { root: Root; - constructor(contentContainer: ContentContainer, callback: () => unknown) { + constructor(contentContainer: ContentContainer, callback: () => Promise) { this.noticeRef = React.createRef(); this.contentContainer = contentContainer;