diff --git a/packages/core/upload/admin/src/components/AssetCard/UploadingAssetCard.js b/packages/core/upload/admin/src/components/AssetCard/UploadingAssetCard.js index a97f906631..165ca9950f 100644 --- a/packages/core/upload/admin/src/components/AssetCard/UploadingAssetCard.js +++ b/packages/core/upload/admin/src/components/AssetCard/UploadingAssetCard.js @@ -53,7 +53,7 @@ const CancelButton = styled.button` } `; -export const UploadingAssetCard = ({ name, extension, assetType, file }) => { +export const UploadingAssetCard = ({ name, extension, assetType, file, onCancel }) => { const { upload, cancel, error, progress } = useUpload(); const { formatMessage } = useIntl(); @@ -78,9 +78,17 @@ export const UploadingAssetCard = ({ name, extension, assetType, file }) => { useEffect(() => { upload(file); + + return () => { + cancel(); + }; // eslint-disable-next-line react-hooks/exhaustive-deps }, []); + const handleCancel = () => { + onCancel(file); + }; + return ( @@ -97,11 +105,11 @@ export const UploadingAssetCard = ({ name, extension, assetType, file }) => { <> - {progress}/100% + {`${progress}/100%`} - + {formatMessage({ id: 'app.components.Button.cancel', @@ -142,4 +150,5 @@ UploadingAssetCard.propTypes = { extension: PropTypes.string.isRequired, name: PropTypes.string.isRequired, file: PropTypes.instanceOf(File).isRequired, + onCancel: PropTypes.func.isRequired, }; diff --git a/packages/core/upload/admin/src/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js b/packages/core/upload/admin/src/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js index c4625870c0..34ec2a89aa 100644 --- a/packages/core/upload/admin/src/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js +++ b/packages/core/upload/admin/src/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js @@ -16,7 +16,7 @@ import { UploadingAssetCard } from '../../AssetCard/UploadingAssetCard'; import { getTrad } from '../../../utils'; import { AssetType, AssetSource } from '../../../constants'; -export const PendingAssetStep = ({ onClose, assets, onClickAddAsset }) => { +export const PendingAssetStep = ({ onClose, assets, onClickAddAsset, onCancelUpload }) => { const { formatMessage } = useIntl(); const [isUploading, setIsUploading] = useState(false); @@ -79,6 +79,7 @@ export const PendingAssetStep = ({ onClose, assets, onClickAddAsset }) => { assetType={asset.type} file={asset.rawFile} size="S" + onCancel={onCancelUpload} /> ); @@ -173,4 +174,5 @@ PendingAssetStep.propTypes = { ).isRequired, onClose: PropTypes.func.isRequired, onClickAddAsset: PropTypes.func.isRequired, + onCancelUpload: PropTypes.func.isRequired, }; diff --git a/packages/core/upload/admin/src/components/UploadAssetDialog/PendingAssetStep/tests/PendingAssetStep.test.js b/packages/core/upload/admin/src/components/UploadAssetDialog/PendingAssetStep/tests/PendingAssetStep.test.js index 8e1e9bea7c..42b7fb98c9 100644 --- a/packages/core/upload/admin/src/components/UploadAssetDialog/PendingAssetStep/tests/PendingAssetStep.test.js +++ b/packages/core/upload/admin/src/components/UploadAssetDialog/PendingAssetStep/tests/PendingAssetStep.test.js @@ -62,6 +62,7 @@ describe('PendingAssetStep', () => { onClose={jest.fn()} onAddAsset={jest.fn()} onClickAddAsset={jest.fn()} + onCancelUpload={jest.fn()} /> diff --git a/packages/core/upload/admin/src/components/UploadAssetDialog/UploadAssetDialog.js b/packages/core/upload/admin/src/components/UploadAssetDialog/UploadAssetDialog.js index 65926b8e40..b47838857a 100644 --- a/packages/core/upload/admin/src/components/UploadAssetDialog/UploadAssetDialog.js +++ b/packages/core/upload/admin/src/components/UploadAssetDialog/UploadAssetDialog.js @@ -23,13 +23,28 @@ export const UploadAssetDialog = ({ onSuccess, onClose }) => { setStep(Steps.AddAsset); }; + const handleCancelUpload = file => { + const nextAssets = assets.filter(asset => asset.rawFile !== file); + setAssets(nextAssets); + + // When there's no asset, transition to the AddAsset step + if (nextAssets.length === 0) { + moveToAddAsset(); + } + }; + return ( {step === Steps.AddAsset && ( )} {step === Steps.PendingAsset && ( - + )} );