Don't close submission menu if submission didn't go through

Fxies submission menu closing for warning about previewing a segment
This commit is contained in:
Ajay
2024-02-01 13:31:19 -05:00
parent c0bc068a18
commit e0fe0fad67
3 changed files with 16 additions and 10 deletions

View File

@@ -14,7 +14,7 @@ export interface SubmissionNoticeProps {
// Contains functions and variables from the content script needed by the skip notice // Contains functions and variables from the content script needed by the skip notice
contentContainer: ContentContainer; contentContainer: ContentContainer;
callback: () => unknown; callback: () => Promise<boolean>;
closeListener: () => void; closeListener: () => void;
} }
@@ -239,9 +239,11 @@ class SubmissionNoticeComponent extends React.Component<SubmissionNoticeProps, S
} }
} }
this.props.callback(); this.props.callback().then((success) => {
if (success) {
this.cancel(); this.cancel();
}
});
} }
sortSegments(): void { sortSegments(): void {

View File

@@ -2265,13 +2265,13 @@ function submitSegments() {
//send the message to the background js //send the message to the background js
//called after all the checks have been made that it's okay to do so //called after all the checks have been made that it's okay to do so
async function sendSubmitMessage() { async function sendSubmitMessage(): Promise<boolean> {
// check if all segments are full video // check if all segments are full video
const onlyFullVideo = sponsorTimesSubmitting.every((segment) => segment.actionType === ActionType.Full); const onlyFullVideo = sponsorTimesSubmitting.every((segment) => segment.actionType === ActionType.Full);
// Block if submitting on a running livestream or premiere // Block if submitting on a running livestream or premiere
if (!onlyFullVideo && (getIsLivePremiere() || isVisible(document.querySelector(".ytp-live-badge")))) { if (!onlyFullVideo && (getIsLivePremiere() || isVisible(document.querySelector(".ytp-live-badge")))) {
alert(chrome.i18n.getMessage("liveOrPremiere")); alert(chrome.i18n.getMessage("liveOrPremiere"));
return; return false;
} }
if (!previewedSegment if (!previewedSegment
@@ -2279,7 +2279,7 @@ async function sendSubmitMessage() {
[ActionType.Full, ActionType.Chapter, ActionType.Poi].includes(segment.actionType) [ActionType.Full, ActionType.Chapter, ActionType.Poi].includes(segment.actionType)
|| segment.segment[1] >= getVideo()?.duration)) { || segment.segment[1] >= getVideo()?.duration)) {
alert(`${chrome.i18n.getMessage("previewSegmentRequired")} ${keybindToString(Config.config.previewKeybind)}`); alert(`${chrome.i18n.getMessage("previewSegmentRequired")} ${keybindToString(Config.config.previewKeybind)}`);
return; return false;
} }
// Add loading animation // Add loading animation
@@ -2305,7 +2305,7 @@ async function sendSubmitMessage() {
const confirmShort = chrome.i18n.getMessage("shortCheck") + "\n\n" + const confirmShort = chrome.i18n.getMessage("shortCheck") + "\n\n" +
getSegmentsMessage(sponsorTimesSubmitting); getSegmentsMessage(sponsorTimesSubmitting);
if(!confirm(confirmShort)) return; if(!confirm(confirmShort)) return false;
} }
} }
} }
@@ -2355,6 +2355,8 @@ async function sendSubmitMessage() {
if (fullVideoSegment) { if (fullVideoSegment) {
categoryPill?.setSegment(fullVideoSegment); categoryPill?.setSegment(fullVideoSegment);
} }
return true;
} else { } else {
// Show that the upload failed // Show that the upload failed
playerButtons.submit.button.style.animation = "unset"; playerButtons.submit.button.style.animation = "unset";
@@ -2366,6 +2368,8 @@ async function sendSubmitMessage() {
alert(getErrorMessage(response.status, response.responseText)); alert(getErrorMessage(response.status, response.responseText));
} }
} }
return false;
} }
//get the message that visually displays the video times //get the message that visually displays the video times

View File

@@ -11,7 +11,7 @@ class SubmissionNotice {
// Contains functions and variables from the content script needed by the skip notice // Contains functions and variables from the content script needed by the skip notice
contentContainer: () => unknown; contentContainer: () => unknown;
callback: () => unknown; callback: () => Promise<boolean>;
noticeRef: React.MutableRefObject<SubmissionNoticeComponent>; noticeRef: React.MutableRefObject<SubmissionNoticeComponent>;
@@ -19,7 +19,7 @@ class SubmissionNotice {
root: Root; root: Root;
constructor(contentContainer: ContentContainer, callback: () => unknown) { constructor(contentContainer: ContentContainer, callback: () => Promise<boolean>) {
this.noticeRef = React.createRef(); this.noticeRef = React.createRef();
this.contentContainer = contentContainer; this.contentContainer = contentContainer;