File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -82,6 +82,23 @@ export function dropzoneCompleteCallback(file) {
8282 content : file . content
8383 } ;
8484 dispatch ( handleCreateFile ( formParams , false ) ) ;
85+ } else if ( file . status === 'error' || file . xhr . status >= 400 ) {
86+ let uploadFileErrorMessage = 'Uploading file to AWS failed.' ;
87+ if ( file . xhr ?. response ) {
88+ const parser = new DOMParser ( ) ;
89+ const xmlDoc = parser . parseFromString ( file . xhr . response , 'text/xml' ) ;
90+ const message = xmlDoc . getElementsByTagName ( 'Message' ) [ 0 ] ?. textContent ;
91+ const code = xmlDoc . getElementsByTagName ( 'Code' ) [ 0 ] ?. textContent ;
92+ uploadFileErrorMessage = `${ code } : ${ message } ` ;
93+ }
94+ file . previewElement . classList . add ( 'dz-error' ) ;
95+ file . previewElement . classList . remove ( 'dz-success' ) ;
96+ const dzErrorMessageElement = file . previewElement ?. querySelector (
97+ '[data-dz-errormessage]'
98+ ) ;
99+ if ( dzErrorMessageElement ) {
100+ dzErrorMessageElement . textContent = uploadFileErrorMessage ;
101+ }
85102 }
86103 } ;
87104}
Original file line number Diff line number Diff line change @@ -23,13 +23,36 @@ const StyledUploader = styled.div`
2323 .dz-preview.dz-image-preview {
2424 background-color: transparent;
2525 }
26+ .dz-image img {
27+ width: 100%;
28+ height: auto;
29+ }
30+ .dz-details .dz-filename:hover {
31+ overflow: hidden;
32+ }
33+ .dz-error-message span {
34+ width: 100%;
35+ height: auto;
36+ overflow: hidden;
37+ display: block;
38+ }
39+ .dz-error-mark:hover {
40+ cursor: pointer !important;
41+ }
2642` ;
2743
2844function FileUploader ( ) {
2945 const { t } = useTranslation ( ) ;
3046 const dispatch = useDispatch ( ) ;
3147 const userId = useSelector ( ( state ) => state . user . id ) ;
32-
48+ const deleteUploadErrorFiles = ( uploader , file ) => {
49+ if ( file . status === 'error' ) {
50+ file . previewElement . addEventListener ( 'click' , ( e ) => {
51+ e . stopPropagation ( ) ;
52+ uploader . removeFile ( file ) ;
53+ } ) ;
54+ }
55+ } ;
3356 useEffect ( ( ) => {
3457 const uploader = new Dropzone ( 'div#uploader' , {
3558 url : s3BucketHttps ,
@@ -52,6 +75,7 @@ function FileUploader() {
5275 } ) ;
5376 uploader . on ( 'complete' , ( file ) => {
5477 dispatch ( dropzoneCompleteCallback ( file ) ) ;
78+ deleteUploadErrorFiles ( uploader , file ) ;
5579 } ) ;
5680 return ( ) => {
5781 uploader . destroy ( ) ;
You can’t perform that action at this time.
0 commit comments