diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/FileUploader/FileUploader.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/FileUploader/FileUploader.js index 1fd582bab5..b73cc7b961 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/FileUploader/FileUploader.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/FileUploader/FileUploader.js @@ -3,6 +3,7 @@ // Copyright (C) 2020-2022 Northwestern University. // Copyright (C) 2022 Graz University of Technology. // Copyright (C) 2022 TU Wien. +// Copyright (C) 2024 KTH Royal Institute of Technology. // // Invenio-RDM-Records is free software; you can redistribute it and/or modify it // under the terms of the MIT License; see LICENSE file for more details. @@ -40,6 +41,7 @@ export const FileUploaderComponent = ({ isFileImportInProgress, decimalSizeDisplay, filesLocked, + allowEmptyFiles, ...uiProps }) => { // We extract the working copy of the draft stored as `values` in formik @@ -47,6 +49,9 @@ export const FileUploaderComponent = ({ const filesEnabled = _get(formikDraft, "files.enabled", false); const [warningMsg, setWarningMsg] = useState(); const lockFileUploader = !isDraftRecord && filesLocked; + const uploadErrors = _map(files, (fileState) => fileState.errors).filter( + (errors) => errors + ); const filesList = Object.values(files).map((fileState) => { return { @@ -79,6 +84,9 @@ export const FileUploaderComponent = ({ ); const maxFileStorageReached = filesSize + acceptedFilesSize > quota.maxStorage; + const emptyFiles = acceptedFiles.filter((file) => file.size === 0); + const nonEmptyFiles = acceptedFiles.filter((file) => file.size > 0); + const filesNames = _map(filesList, "name"); const duplicateFiles = acceptedFiles.filter((acceptedFile) => filesNames.includes(acceptedFile.name) @@ -130,7 +138,26 @@ export const FileUploaderComponent = ({ ); } else { - uploadFiles(formikDraft, acceptedFiles); + if (!_isEmpty(emptyFiles) && !allowEmptyFiles) { + setWarningMsg( +