fix: clear dropzone state after upload (#150)
* fix: clear dropzone state after upload * fix: avoid state update on unmounted component
This commit is contained in:
@@ -15,6 +15,7 @@ import SelectStamp from './SelectStamp'
|
|||||||
const MAX_FILE_SIZE = 1_000_000_000 // 1 gigabyte
|
const MAX_FILE_SIZE = 1_000_000_000 // 1 gigabyte
|
||||||
|
|
||||||
export default function Files(): ReactElement {
|
export default function Files(): ReactElement {
|
||||||
|
const [dropzoneKey, setDropzoneKey] = useState(0)
|
||||||
const [file, setFile] = useState<File | null>(null)
|
const [file, setFile] = useState<File | null>(null)
|
||||||
const [uploadReference, setUploadReference] = useState('')
|
const [uploadReference, setUploadReference] = useState('')
|
||||||
const [isUploadingFile, setIsUploadingFile] = useState(false)
|
const [isUploadingFile, setIsUploadingFile] = useState(false)
|
||||||
@@ -43,8 +44,11 @@ export default function Files(): ReactElement {
|
|||||||
beeApi.files
|
beeApi.files
|
||||||
.uploadFile(selectedStamp.batchID, file)
|
.uploadFile(selectedStamp.batchID, file)
|
||||||
.then(hash => {
|
.then(hash => {
|
||||||
setUploadReference(hash)
|
window.setTimeout(() => {
|
||||||
setFile(null)
|
setFile(null)
|
||||||
|
setUploadReference(hash)
|
||||||
|
setDropzoneKey(dropzoneKey + 1)
|
||||||
|
}, 0)
|
||||||
})
|
})
|
||||||
.catch(e => enqueueSnackbar(`Error uploading: ${e.message}`, { variant: 'error' }))
|
.catch(e => enqueueSnackbar(`Error uploading: ${e.message}`, { variant: 'error' }))
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
@@ -55,14 +59,18 @@ export default function Files(): ReactElement {
|
|||||||
const handleChange = (files?: File[]) => {
|
const handleChange = (files?: File[]) => {
|
||||||
if (files) {
|
if (files) {
|
||||||
setFile(files[0])
|
setFile(files[0])
|
||||||
setUploadReference('')
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<div>
|
<div>
|
||||||
<DropzoneArea onChange={handleChange} filesLimit={1} maxFileSize={MAX_FILE_SIZE} />
|
<DropzoneArea
|
||||||
|
key={'dropzone-' + dropzoneKey}
|
||||||
|
onChange={handleChange}
|
||||||
|
filesLimit={1}
|
||||||
|
maxFileSize={MAX_FILE_SIZE}
|
||||||
|
/>
|
||||||
<div style={{ marginTop: '15px' }}>
|
<div style={{ marginTop: '15px' }}>
|
||||||
{selectedStamp && (
|
{selectedStamp && (
|
||||||
<div style={{ display: 'flex' }}>
|
<div style={{ display: 'flex' }}>
|
||||||
|
|||||||
Reference in New Issue
Block a user