diff --git a/app/javascript/new_design/dossiers/auto-upload-controller.js b/app/javascript/new_design/dossiers/auto-upload-controller.js index b26601468..ad4eec39c 100644 --- a/app/javascript/new_design/dossiers/auto-upload-controller.js +++ b/app/javascript/new_design/dossiers/auto-upload-controller.js @@ -93,7 +93,18 @@ export default class AutoUploadController { this.input.disabled = false; } + _isError422(error) { + // Ajax errors have an xhr attribute + if (error && error.xhr && error.xhr.status == 422) return true; + // Rails DirectUpload errors are returned as a String, e.g. 'Error creating Blob for "Demain.txt". Status: 422' + if (error && error.toString().includes('422')) return true; + + return false; + } + _messageFromError(error) { + let allowRetry = !this._isError422(error); + if ( error.xhr && error.xhr.status == 422 && @@ -104,13 +115,13 @@ export default class AutoUploadController { return { title: error.response.errors[0], description: '', - retry: false + retry: allowRetry }; } else { return { title: 'Une erreur s’est produite pendant l’envoi du fichier.', description: error.message || error.toString(), - retry: true + retry: allowRetry }; } } diff --git a/app/javascript/new_design/dossiers/auto-upload.js b/app/javascript/new_design/dossiers/auto-upload.js index 627a61000..784fdd314 100644 --- a/app/javascript/new_design/dossiers/auto-upload.js +++ b/app/javascript/new_design/dossiers/auto-upload.js @@ -16,8 +16,8 @@ delegate('change', fileInputSelector, event => { }); const retryButtonSelector = `button.attachment-error-retry`; -delegate('click', retryButtonSelector, event => { - const inputSelector = event.target.dataset.inputTarget; +delegate('click', retryButtonSelector, function() { + const inputSelector = this.dataset.inputTarget; const input = document.querySelector(inputSelector); startUpload(input); }); diff --git a/app/views/users/feedbacks/create.js.erb b/app/views/users/feedbacks/create.js.erb index 3923caada..3e7422464 100644 --- a/app/views/users/feedbacks/create.js.erb +++ b/app/views/users/feedbacks/create.js.erb @@ -1,6 +1,6 @@ try { window.scroll({ top: 0, left: 0, behavior: 'smooth' }); -} catch { +} catch(e) { window.scroll(0, 0); } <%= remove_element('#user-satisfaction') %>