From c954f5533b75ad0e08ac2f6db7e3f64065121020 Mon Sep 17 00:00:00 2001 From: Marco Szulik Date: Thu, 8 Aug 2024 10:16:29 +0200 Subject: [PATCH 1/2] improve the previous fix for overwriting uploads --- amigor/composer.lock | 4 +-- .../vendor/transmorpher/mix-manifest.json | 2 +- .../vendor/transmorpher/transmorpher.js | 27 ++++++++++++------- dist/mix-manifest.json | 2 +- dist/transmorpher.js | 27 ++++++++++++------- src/lang/en/dropzone.php | 1 - src/resources/js/transmorpher.js | 27 +++++++++++-------- 7 files changed, 54 insertions(+), 36 deletions(-) diff --git a/amigor/composer.lock b/amigor/composer.lock index 9af4bbf..de53c70 100644 --- a/amigor/composer.lock +++ b/amigor/composer.lock @@ -137,11 +137,11 @@ }, { "name": "cybex/laravel-transmorpher-client", - "version": "dev-fix/overwriting-uploads", + "version": "dev-fix/improve-overwrite-fix", "dist": { "type": "path", "url": "vendor/cybex/laravel-transmorpher-client", - "reference": "a832d742b07e3375a238e6fb6403a033d5c1ffd0" + "reference": "4411b7013ad2a4749eca4b13d0fcf5cb154e7e17" }, "require": { "enyo/dropzone": "^5.9", diff --git a/amigor/public/vendor/transmorpher/mix-manifest.json b/amigor/public/vendor/transmorpher/mix-manifest.json index 6686769..33e396f 100644 --- a/amigor/public/vendor/transmorpher/mix-manifest.json +++ b/amigor/public/vendor/transmorpher/mix-manifest.json @@ -1,5 +1,5 @@ { - "/transmorpher.js": "/transmorpher.js?id=5b7ab84ce745288f338db3682557a717", + "/transmorpher.js": "/transmorpher.js?id=4f1525595dcf360b250a8d5ecf6efbad", "/transmorpher.css": "/transmorpher.css?id=56dbb0cba726c3e63f1c109f6b9a6f1b", "/icons/delete.svg": "/icons/delete.svg?id=f88179ccc3649c47f2264315be6c0421", "/icons/enlargen.svg": "/icons/enlargen.svg?id=9f560ce3f022646dbb826a066715a343", diff --git a/amigor/public/vendor/transmorpher/transmorpher.js b/amigor/public/vendor/transmorpher/transmorpher.js index 11bef67..e5aa85f 100644 --- a/amigor/public/vendor/transmorpher/transmorpher.js +++ b/amigor/public/vendor/transmorpher/transmorpher.js @@ -97,7 +97,7 @@ if (!window.transmorpherScriptLoaded) { } else { getState(transmorpherIdentifier).then(function (uploadingStateResponse) { if (uploadingStateResponse.state === 'uploading' || uploadingStateResponse.state === 'processing') { - openUploadConfirmModal(transmorpherIdentifier, createCallbackWithArguments(reserveUploadSlot, transmorpherIdentifier, file.done), uploadingStateResponse.state); + openUploadConfirmModal(transmorpherIdentifier, createCallbackWithArguments(reserveUploadSlot, transmorpherIdentifier, file.done)); } else { reserveUploadSlot(transmorpherIdentifier, file.done); } @@ -291,8 +291,9 @@ if (!window.transmorpherScriptLoaded) { displayUploadResult(response, transmorpherIdentifier, uploadToken); } - // Fixes undefined state after first upload. - document.querySelector("#dz-".concat(transmorpherIdentifier)).dropzone.removeAllFiles(); + // The file object stays in the dropzone forever and messes with our state, we don't need it. + var dropzone = document.querySelector("#dz-".concat(transmorpherIdentifier)).dropzone; + dropzone.removeFile(dropzone.files[0]); }; window.displayUploadResult = function (uploadResult, transmorpherIdentifier, uploadToken) { resetAgeElement(transmorpherIdentifier); @@ -415,7 +416,7 @@ if (!window.transmorpherScriptLoaded) { window.setVersion = function (transmorpherIdentifier, version) { getState(transmorpherIdentifier).then(function (uploadingStateResponse) { if (uploadingStateResponse.state === 'uploading' || uploadingStateResponse.state === 'processing') { - openUploadConfirmModal(transmorpherIdentifier, createCallbackWithArguments(makeSetVersionCall, transmorpherIdentifier, version), uploadingStateResponse.state); + openUploadConfirmModal(transmorpherIdentifier, createCallbackWithArguments(makeSetVersionCall, transmorpherIdentifier, version)); } else { makeSetVersionCall(transmorpherIdentifier, version); } @@ -610,7 +611,7 @@ if (!window.transmorpherScriptLoaded) { } return date.toLocaleString(); }; - window.openUploadConfirmModal = function (transmorpherIdentifier, callback, uploadState) { + window.openUploadConfirmModal = function (transmorpherIdentifier, callback) { var modal = document.querySelector("#modal-uc-".concat(transmorpherIdentifier)); var dropzone = document.querySelector("#dz-".concat(transmorpherIdentifier)).dropzone; var previewElement = document.querySelector("#dz-".concat(transmorpherIdentifier, " .dz-preview ~ .dz-preview")); @@ -620,12 +621,18 @@ if (!window.transmorpherScriptLoaded) { var _dropzone$files$; previewElement ? previewElement.style.display = 'block' : null; document.querySelector("#modal-uc-".concat(transmorpherIdentifier)).classList.remove('d-flex'); - if (dropzone.files[1] != null) { + + // If there is an upload in progress, remove it. + if (((_dropzone$files$ = dropzone.files[0]) === null || _dropzone$files$ === void 0 ? void 0 : _dropzone$files$.status) === 'uploading') { + // If a version was restored, show the default message. + if (!dropzone.files[1]) { + document.querySelector("#dz-".concat(transmorpherIdentifier, " .dz-default")).style.display = 'block'; + } dropzone.removeFile(dropzone.files[0]); - } else if (uploadState !== 'processing' && (dropzone === null || dropzone === void 0 || (_dropzone$files$ = dropzone.files[0]) === null || _dropzone$files$ === void 0 ? void 0 : _dropzone$files$.status) !== dropzone__WEBPACK_IMPORTED_MODULE_0__["default"].ADDED) { - // This happens when the dropzone state was reset while initializing. - displayState(transmorpherIdentifier, 'error', media[transmorpherIdentifier].translations['upload_aborted']); - return; + } else if (dropzone.files[0]) { + // If the file is not uploading, the overwrite button was clicked after finishing the upload. Display the progressbar. + document.querySelector("#dz-".concat(transmorpherIdentifier, " .dz-default")).style.display = 'none'; + previewElement ? previewElement.style.display = 'block' : null; } callback(); }; diff --git a/dist/mix-manifest.json b/dist/mix-manifest.json index 6686769..33e396f 100644 --- a/dist/mix-manifest.json +++ b/dist/mix-manifest.json @@ -1,5 +1,5 @@ { - "/transmorpher.js": "/transmorpher.js?id=5b7ab84ce745288f338db3682557a717", + "/transmorpher.js": "/transmorpher.js?id=4f1525595dcf360b250a8d5ecf6efbad", "/transmorpher.css": "/transmorpher.css?id=56dbb0cba726c3e63f1c109f6b9a6f1b", "/icons/delete.svg": "/icons/delete.svg?id=f88179ccc3649c47f2264315be6c0421", "/icons/enlargen.svg": "/icons/enlargen.svg?id=9f560ce3f022646dbb826a066715a343", diff --git a/dist/transmorpher.js b/dist/transmorpher.js index 11bef67..e5aa85f 100644 --- a/dist/transmorpher.js +++ b/dist/transmorpher.js @@ -97,7 +97,7 @@ if (!window.transmorpherScriptLoaded) { } else { getState(transmorpherIdentifier).then(function (uploadingStateResponse) { if (uploadingStateResponse.state === 'uploading' || uploadingStateResponse.state === 'processing') { - openUploadConfirmModal(transmorpherIdentifier, createCallbackWithArguments(reserveUploadSlot, transmorpherIdentifier, file.done), uploadingStateResponse.state); + openUploadConfirmModal(transmorpherIdentifier, createCallbackWithArguments(reserveUploadSlot, transmorpherIdentifier, file.done)); } else { reserveUploadSlot(transmorpherIdentifier, file.done); } @@ -291,8 +291,9 @@ if (!window.transmorpherScriptLoaded) { displayUploadResult(response, transmorpherIdentifier, uploadToken); } - // Fixes undefined state after first upload. - document.querySelector("#dz-".concat(transmorpherIdentifier)).dropzone.removeAllFiles(); + // The file object stays in the dropzone forever and messes with our state, we don't need it. + var dropzone = document.querySelector("#dz-".concat(transmorpherIdentifier)).dropzone; + dropzone.removeFile(dropzone.files[0]); }; window.displayUploadResult = function (uploadResult, transmorpherIdentifier, uploadToken) { resetAgeElement(transmorpherIdentifier); @@ -415,7 +416,7 @@ if (!window.transmorpherScriptLoaded) { window.setVersion = function (transmorpherIdentifier, version) { getState(transmorpherIdentifier).then(function (uploadingStateResponse) { if (uploadingStateResponse.state === 'uploading' || uploadingStateResponse.state === 'processing') { - openUploadConfirmModal(transmorpherIdentifier, createCallbackWithArguments(makeSetVersionCall, transmorpherIdentifier, version), uploadingStateResponse.state); + openUploadConfirmModal(transmorpherIdentifier, createCallbackWithArguments(makeSetVersionCall, transmorpherIdentifier, version)); } else { makeSetVersionCall(transmorpherIdentifier, version); } @@ -610,7 +611,7 @@ if (!window.transmorpherScriptLoaded) { } return date.toLocaleString(); }; - window.openUploadConfirmModal = function (transmorpherIdentifier, callback, uploadState) { + window.openUploadConfirmModal = function (transmorpherIdentifier, callback) { var modal = document.querySelector("#modal-uc-".concat(transmorpherIdentifier)); var dropzone = document.querySelector("#dz-".concat(transmorpherIdentifier)).dropzone; var previewElement = document.querySelector("#dz-".concat(transmorpherIdentifier, " .dz-preview ~ .dz-preview")); @@ -620,12 +621,18 @@ if (!window.transmorpherScriptLoaded) { var _dropzone$files$; previewElement ? previewElement.style.display = 'block' : null; document.querySelector("#modal-uc-".concat(transmorpherIdentifier)).classList.remove('d-flex'); - if (dropzone.files[1] != null) { + + // If there is an upload in progress, remove it. + if (((_dropzone$files$ = dropzone.files[0]) === null || _dropzone$files$ === void 0 ? void 0 : _dropzone$files$.status) === 'uploading') { + // If a version was restored, show the default message. + if (!dropzone.files[1]) { + document.querySelector("#dz-".concat(transmorpherIdentifier, " .dz-default")).style.display = 'block'; + } dropzone.removeFile(dropzone.files[0]); - } else if (uploadState !== 'processing' && (dropzone === null || dropzone === void 0 || (_dropzone$files$ = dropzone.files[0]) === null || _dropzone$files$ === void 0 ? void 0 : _dropzone$files$.status) !== dropzone__WEBPACK_IMPORTED_MODULE_0__["default"].ADDED) { - // This happens when the dropzone state was reset while initializing. - displayState(transmorpherIdentifier, 'error', media[transmorpherIdentifier].translations['upload_aborted']); - return; + } else if (dropzone.files[0]) { + // If the file is not uploading, the overwrite button was clicked after finishing the upload. Display the progressbar. + document.querySelector("#dz-".concat(transmorpherIdentifier, " .dz-default")).style.display = 'none'; + previewElement ? previewElement.style.display = 'block' : null; } callback(); }; diff --git a/src/lang/en/dropzone.php b/src/lang/en/dropzone.php index a277f9e..f93065c 100644 --- a/src/lang/en/dropzone.php +++ b/src/lang/en/dropzone.php @@ -19,7 +19,6 @@ 'success' => 'Success', 'uploading' => 'Uploading', 'upload_canceled' => 'Upload canceled', - 'upload_aborted' => 'Error, please try again.', 'validation_error' => 'There was an error when trying to validate media dimensions.', 'video_in_process' => 'A video is currently uploading or processing, do you want to overwrite it?', 'html_video_not_supported' => 'Your browser doesn\'t support HTML video. Here is a link to the video instead.' diff --git a/src/resources/js/transmorpher.js b/src/resources/js/transmorpher.js index d646870..bcb60dc 100644 --- a/src/resources/js/transmorpher.js +++ b/src/resources/js/transmorpher.js @@ -90,7 +90,6 @@ if (!window.transmorpherScriptLoaded) { openUploadConfirmModal( transmorpherIdentifier, createCallbackWithArguments(reserveUploadSlot, transmorpherIdentifier, file.done), - uploadingStateResponse.state ); } else { reserveUploadSlot(transmorpherIdentifier, file.done); @@ -284,9 +283,9 @@ if (!window.transmorpherScriptLoaded) { displayUploadResult(response, transmorpherIdentifier, uploadToken); } - - // Fixes undefined state after first upload. - document.querySelector(`#dz-${transmorpherIdentifier}`).dropzone.removeAllFiles(); + // The file object stays in the dropzone forever and messes with our state, we don't need it. + let dropzone = document.querySelector(`#dz-${transmorpherIdentifier}`).dropzone; + dropzone.removeFile(dropzone.files[0]); } window.displayUploadResult = function (uploadResult, transmorpherIdentifier, uploadToken) { @@ -421,7 +420,7 @@ if (!window.transmorpherScriptLoaded) { window.setVersion = function (transmorpherIdentifier, version) { getState(transmorpherIdentifier).then(uploadingStateResponse => { if (uploadingStateResponse.state === 'uploading' || uploadingStateResponse.state === 'processing') { - openUploadConfirmModal(transmorpherIdentifier, createCallbackWithArguments(makeSetVersionCall, transmorpherIdentifier, version), uploadingStateResponse.state); + openUploadConfirmModal(transmorpherIdentifier, createCallbackWithArguments(makeSetVersionCall, transmorpherIdentifier, version)); } else { makeSetVersionCall(transmorpherIdentifier, version); } @@ -641,7 +640,7 @@ if (!window.transmorpherScriptLoaded) { return date.toLocaleString(); } - window.openUploadConfirmModal = function (transmorpherIdentifier, callback, uploadState) { + window.openUploadConfirmModal = function (transmorpherIdentifier, callback) { let modal = document.querySelector(`#modal-uc-${transmorpherIdentifier}`); let dropzone = document.querySelector(`#dz-${transmorpherIdentifier}`).dropzone; let previewElement = document.querySelector(`#dz-${transmorpherIdentifier} .dz-preview ~ .dz-preview`); @@ -653,12 +652,18 @@ if (!window.transmorpherScriptLoaded) { previewElement ? previewElement.style.display = 'block' : null; document.querySelector(`#modal-uc-${transmorpherIdentifier}`).classList.remove('d-flex'); - if (dropzone.files[1] != null) { + // If there is an upload in progress, remove it. + if (dropzone.files[0]?.status === 'uploading') { + // If a version was restored, show the default message. + if (!dropzone.files[1]) { + document.querySelector(`#dz-${transmorpherIdentifier} .dz-default`).style.display = 'block'; + } + dropzone.removeFile(dropzone.files[0]); - } else if (uploadState !== 'processing' && dropzone?.files[0]?.status !== Dropzone.ADDED) { - // This happens when the dropzone state was reset while initializing. - displayState(transmorpherIdentifier, 'error', media[transmorpherIdentifier].translations['upload_aborted']); - return; + } else if (dropzone.files[0]) { + // If the file is not uploading, the overwrite button was clicked after finishing the upload. Display the progressbar. + document.querySelector(`#dz-${transmorpherIdentifier} .dz-default`).style.display = 'none'; + previewElement ? previewElement.style.display = 'block' : null; } callback(); From 409a66623b2b6894d4a75363f10732a5c8cc65f0 Mon Sep 17 00:00:00 2001 From: Marco Szulik Date: Thu, 8 Aug 2024 14:16:43 +0200 Subject: [PATCH 2/2] adjust comment --- amigor/composer.lock | 2 +- amigor/public/vendor/transmorpher/mix-manifest.json | 2 +- amigor/public/vendor/transmorpher/transmorpher.js | 2 +- dist/mix-manifest.json | 2 +- dist/transmorpher.js | 2 +- src/resources/js/transmorpher.js | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/amigor/composer.lock b/amigor/composer.lock index de53c70..14eead6 100644 --- a/amigor/composer.lock +++ b/amigor/composer.lock @@ -141,7 +141,7 @@ "dist": { "type": "path", "url": "vendor/cybex/laravel-transmorpher-client", - "reference": "4411b7013ad2a4749eca4b13d0fcf5cb154e7e17" + "reference": "c954f5533b75ad0e08ac2f6db7e3f64065121020" }, "require": { "enyo/dropzone": "^5.9", diff --git a/amigor/public/vendor/transmorpher/mix-manifest.json b/amigor/public/vendor/transmorpher/mix-manifest.json index 33e396f..0c98ec0 100644 --- a/amigor/public/vendor/transmorpher/mix-manifest.json +++ b/amigor/public/vendor/transmorpher/mix-manifest.json @@ -1,5 +1,5 @@ { - "/transmorpher.js": "/transmorpher.js?id=4f1525595dcf360b250a8d5ecf6efbad", + "/transmorpher.js": "/transmorpher.js?id=87f85bfe73123b6a5abd7f638bd951ed", "/transmorpher.css": "/transmorpher.css?id=56dbb0cba726c3e63f1c109f6b9a6f1b", "/icons/delete.svg": "/icons/delete.svg?id=f88179ccc3649c47f2264315be6c0421", "/icons/enlargen.svg": "/icons/enlargen.svg?id=9f560ce3f022646dbb826a066715a343", diff --git a/amigor/public/vendor/transmorpher/transmorpher.js b/amigor/public/vendor/transmorpher/transmorpher.js index e5aa85f..6cb645c 100644 --- a/amigor/public/vendor/transmorpher/transmorpher.js +++ b/amigor/public/vendor/transmorpher/transmorpher.js @@ -291,7 +291,7 @@ if (!window.transmorpherScriptLoaded) { displayUploadResult(response, transmorpherIdentifier, uploadToken); } - // The file object stays in the dropzone forever and messes with our state, we don't need it. + // Remove the uploaded file to reset the state. var dropzone = document.querySelector("#dz-".concat(transmorpherIdentifier)).dropzone; dropzone.removeFile(dropzone.files[0]); }; diff --git a/dist/mix-manifest.json b/dist/mix-manifest.json index 33e396f..0c98ec0 100644 --- a/dist/mix-manifest.json +++ b/dist/mix-manifest.json @@ -1,5 +1,5 @@ { - "/transmorpher.js": "/transmorpher.js?id=4f1525595dcf360b250a8d5ecf6efbad", + "/transmorpher.js": "/transmorpher.js?id=87f85bfe73123b6a5abd7f638bd951ed", "/transmorpher.css": "/transmorpher.css?id=56dbb0cba726c3e63f1c109f6b9a6f1b", "/icons/delete.svg": "/icons/delete.svg?id=f88179ccc3649c47f2264315be6c0421", "/icons/enlargen.svg": "/icons/enlargen.svg?id=9f560ce3f022646dbb826a066715a343", diff --git a/dist/transmorpher.js b/dist/transmorpher.js index e5aa85f..6cb645c 100644 --- a/dist/transmorpher.js +++ b/dist/transmorpher.js @@ -291,7 +291,7 @@ if (!window.transmorpherScriptLoaded) { displayUploadResult(response, transmorpherIdentifier, uploadToken); } - // The file object stays in the dropzone forever and messes with our state, we don't need it. + // Remove the uploaded file to reset the state. var dropzone = document.querySelector("#dz-".concat(transmorpherIdentifier)).dropzone; dropzone.removeFile(dropzone.files[0]); }; diff --git a/src/resources/js/transmorpher.js b/src/resources/js/transmorpher.js index bcb60dc..93f4920 100644 --- a/src/resources/js/transmorpher.js +++ b/src/resources/js/transmorpher.js @@ -283,7 +283,7 @@ if (!window.transmorpherScriptLoaded) { displayUploadResult(response, transmorpherIdentifier, uploadToken); } - // The file object stays in the dropzone forever and messes with our state, we don't need it. + // Remove the uploaded file to reset the state. let dropzone = document.querySelector(`#dz-${transmorpherIdentifier}`).dropzone; dropzone.removeFile(dropzone.files[0]); }