From 712ce91b1b9cf297e24e3b5f490b346bd075de12 Mon Sep 17 00:00:00 2001 From: Marco Szulik Date: Thu, 8 Aug 2024 10:16:29 +0200 Subject: [PATCH] improve the previous fix for overwriting uploads --- amigor/composer.lock | 4 +-- .../vendor/transmorpher/mix-manifest.json | 2 +- .../vendor/transmorpher/transmorpher.js | 28 +++++++++++-------- dist/mix-manifest.json | 2 +- dist/transmorpher.js | 28 +++++++++++-------- src/lang/en/dropzone.php | 1 - src/resources/js/transmorpher.js | 25 +++++++++-------- 7 files changed, 52 insertions(+), 38 deletions(-) diff --git a/amigor/composer.lock b/amigor/composer.lock index 9af4bbf..2fa333b 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": "aff8563848f2017c0ac0ecb01c538a759e2ea6b6" }, "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..304701c 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=b8faf7f20072dcf7c7a0f15425dfa7c1", "/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..a7757b6 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), true); } else { makeSetVersionCall(transmorpherIdentifier, version); } @@ -610,22 +611,27 @@ if (!window.transmorpherScriptLoaded) { } return date.toLocaleString(); }; - window.openUploadConfirmModal = function (transmorpherIdentifier, callback, uploadState) { + window.openUploadConfirmModal = function (transmorpherIdentifier, callback) { + var versionRestored = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; 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")); modal.classList.add('d-flex'); previewElement ? previewElement.style.display = 'none' : null; modal.querySelector('.badge-error').onclick = function () { - 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 a version was restored, we need to show the default message, else we need to hide it to show the progress bar. + if (versionRestored) { + document.querySelector("#dz-".concat(transmorpherIdentifier, " .dz-default")).style.display = 'block'; + } else { + document.querySelector("#dz-".concat(transmorpherIdentifier, " .dz-default")).style.display = 'none'; + } + + // We don't want to remove any files when the version was restored from another window, i.e. files[0] is null. + if (dropzone.files[1] != null || versionRestored && dropzone.files[0] != null) { 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; } callback(); }; diff --git a/dist/mix-manifest.json b/dist/mix-manifest.json index 6686769..304701c 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=b8faf7f20072dcf7c7a0f15425dfa7c1", "/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..a7757b6 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), true); } else { makeSetVersionCall(transmorpherIdentifier, version); } @@ -610,22 +611,27 @@ if (!window.transmorpherScriptLoaded) { } return date.toLocaleString(); }; - window.openUploadConfirmModal = function (transmorpherIdentifier, callback, uploadState) { + window.openUploadConfirmModal = function (transmorpherIdentifier, callback) { + var versionRestored = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; 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")); modal.classList.add('d-flex'); previewElement ? previewElement.style.display = 'none' : null; modal.querySelector('.badge-error').onclick = function () { - 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 a version was restored, we need to show the default message, else we need to hide it to show the progress bar. + if (versionRestored) { + document.querySelector("#dz-".concat(transmorpherIdentifier, " .dz-default")).style.display = 'block'; + } else { + document.querySelector("#dz-".concat(transmorpherIdentifier, " .dz-default")).style.display = 'none'; + } + + // We don't want to remove any files when the version was restored from another window, i.e. files[0] is null. + if (dropzone.files[1] != null || versionRestored && dropzone.files[0] != null) { 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; } 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..462b655 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), true); } 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, versionRestored = false) { 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,16 @@ if (!window.transmorpherScriptLoaded) { previewElement ? previewElement.style.display = 'block' : null; document.querySelector(`#modal-uc-${transmorpherIdentifier}`).classList.remove('d-flex'); - if (dropzone.files[1] != null) { + // If a version was restored, we need to show the default message, else we need to hide it to show the progress bar. + if (versionRestored) { + document.querySelector(`#dz-${transmorpherIdentifier} .dz-default`).style.display = 'block'; + } else { + document.querySelector(`#dz-${transmorpherIdentifier} .dz-default`).style.display = 'none'; + } + + // We don't want to remove any files when the version was restored from another window, i.e. files[0] is null. + if (dropzone.files[1] != null || (versionRestored && dropzone.files[0] != null)) { 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; } callback();