diff --git a/thrimbletrimmer/scripts/edit.js b/thrimbletrimmer/scripts/edit.js index 45ab486..3f317b2 100644 --- a/thrimbletrimmer/scripts/edit.js +++ b/thrimbletrimmer/scripts/edit.js @@ -946,6 +946,11 @@ async function sendVideoData(newState, overrideChanges) { submissionResponseElem.classList.value = ["submission-response-pending"]; submissionResponseElem.innerText = "Submitting video..."; + function submissionError(message) { + submissionResponseElem.innerText = message; + submissionResponseElem.classList.value = ["submission-response-error"]; + } + const rangesData = []; const transitions = []; let chaptersData = []; @@ -965,7 +970,7 @@ async function sendVideoData(newState, overrideChanges) { // Note that !(x > 0) is not equivalent to (x <= 0) due to NaN. const transitionDuration = Number(transitionDurationStr); if ( !(transitionDuration > 0) ) { - addError(`Couldn't submit edits: Invalid transition duration: "${transitionDurationStr}"`); + submissionError(`Couldn't submit edits: Invalid transition duration: "${transitionDurationStr}"`); return; } transitions.push([transitionType, transitionDuration]) @@ -984,7 +989,6 @@ async function sendVideoData(newState, overrideChanges) { const rangeEndSubmit = wubloaderTimeFromVideoPlayerTime(rangeEndPlayer); if (edited && (!rangeStartSubmit || !rangeEndSubmit)) { - submissionResponseElem.classList.value = ["submission-response-error"]; let errorMessage; if (!rangeStartSubmit && !rangeEndSubmit) { errorMessage = `The range endpoints "${rangeStartSubmit}" and "${rangeEndSubmit}" are not valid.`; @@ -993,14 +997,12 @@ async function sendVideoData(newState, overrideChanges) { } else { errorMessage = `The range endpoint "${rangeEndSubmit}" is not valid.`; } - submissionResponseElem.innerText = errorMessage; + submissionError(errorMessage); return; } if (edited && rangeEndPlayer < rangeStartPlayer) { - submissionResponseElem.innerText = - "One or more ranges has an end time prior to its start time."; - submissionResponseElem.classList.value = ["submission-response-error"]; + submissionError("One or more ranges has an end time prior to its start time."); return; } @@ -1024,15 +1026,13 @@ async function sendVideoData(newState, overrideChanges) { const startFieldTime = videoPlayerTimeFromVideoHumanTime(startField.value); if (startFieldTime === null) { if (edited) { - submissionResponseElem.innerText = `Unable to parse chapter start time: ${startField.value}`; - submissionResponseElem.classList.value = ["submission-response-error"]; + submissionError(`Unable to parse chapter start time: ${startField.value}`); return; } continue; } if (startFieldTime < rangeStartPlayer || startFieldTime > rangeEndPlayer) { - submissionResponseElem.innerText = `The chapter at "${startField.value}" is outside its containing time range.`; - submissionResponseElem.classList.value = ["submission-response-error"]; + submissionError(`The chapter at "${startField.value}" is outside its containing time range.`); return; } const chapterStartTime = rangeStartInFinalVideo + startFieldTime - rangeStartPlayer; @@ -1051,9 +1051,7 @@ async function sendVideoData(newState, overrideChanges) { enableChaptersElem.checked && rangeContainer.getElementsByClassName("range-definition-chapter-marker-start").length > 0 ) { - submissionResponseElem.classList.value = ["submission-response-error"]; - submissionResponseElem.innerText = - "Chapter markers can't be saved for ranges without valid endpoints."; + submissionError("Chapter markers can't be saved for ranges without valid endpoints."); return; } } @@ -1069,16 +1067,13 @@ async function sendVideoData(newState, overrideChanges) { if (chaptersData.length > 0) { if (chaptersData[0].start !== 0) { - submissionResponseElem.innerText = - "The first chapter must start at the beginning of the video"; - submissionResponseElem.classList.value = ["submission-response-error"]; + submissionError("The first chapter must start at the beginning of the video"); return; } let lastChapterStart = 0; for (let chapterIndex = 1; chapterIndex < chaptersData.length; chapterIndex++) { if (edited && chaptersData[chapterIndex].start - lastChapterStart < 10) { - submissionResponseElem.innerText = "Chapters must be at least 10 seconds apart"; - submissionResponseElem.classList.value = ["submission-response-error"]; + submissionError("Chapters must be at least 10 seconds apart"); return; } lastChapterStart = chaptersData[chapterIndex].start; @@ -1102,8 +1097,7 @@ async function sendVideoData(newState, overrideChanges) { document.getElementById("video-info-thumbnail-time").value, ); if (thumbnailTime === null) { - submissionResponseElem.innerText = "The thumbnail time is invalid"; - submissionResponseElem.classList.value = ["submission-response-error"]; + submissionError("The thumbnail time is invalid"); return; } } @@ -1114,9 +1108,7 @@ async function sendVideoData(newState, overrideChanges) { const fileInput = document.getElementById("video-info-thumbnail-custom"); if (fileInput.files.length === 0) { if (!videoInfo.thumbnail_image) { - submissionResponseElem.innerText = - "A thumbnail file was not provided for the custom thumbnail"; - submissionResponseElem.classList.value = ["submission-response-error"]; + submissionError("A thumbnail file was not provided for the custom thumbnail"); return; } thumbnailImage = videoInfo.thumbnail_image; @@ -1134,14 +1126,11 @@ async function sendVideoData(newState, overrideChanges) { await loadPromise; const fileLoadData = fileReader.result; if (fileLoadData.error) { - submissionResponseElem.innerText = `An error (${fileLoadData.error.name}) occurred loading the custom thumbnail: ${fileLoadData.error.message}`; - submissionResponseElem.classList.value = ["submission-response-error"]; + submissionError(`An error (${fileLoadData.error.name}) occurred loading the custom thumbnail: ${fileLoadData.error.message}`); return; } if (fileLoadData.substring(0, 22) !== "data:image/png;base64,") { - submissionResponseElem.innerHTML = - "An error occurred converting the uploaded image to base64."; - submissionResponseElem.classList.value = ["submission-response-error"]; + submissionError("An error occurred converting the uploaded image to base64."); return; } thumbnailImage = fileLoadData.substring(22);