From dd8b58d13b4a720e81a327660c5a3445297e5336 Mon Sep 17 00:00:00 2001 From: Alf Eaton <eaton.alf@gmail.com> Date: Thu, 31 Aug 2017 21:05:34 +0100 Subject: [PATCH] Improve file uploading --- src/molecules/Files.js | 8 ++++++-- src/molecules/Upload.js | 10 +++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/molecules/Files.js b/src/molecules/Files.js index 5e653183b..e7b536229 100644 --- a/src/molecules/Files.js +++ b/src/molecules/Files.js @@ -36,9 +36,13 @@ class Files extends React.Component { url }) - this.setState({ values }) + const uploads = this.state.uploads.filter(item => { + return item.file.name !== file.name + }) + + this.setState({ values, uploads }) - this.props.handleChange(values) + this.props.onChange(values) } render () { diff --git a/src/molecules/Upload.js b/src/molecules/Upload.js index d7fcc0052..6d24f2bba 100644 --- a/src/molecules/Upload.js +++ b/src/molecules/Upload.js @@ -16,8 +16,10 @@ class Upload extends React.Component { request.addEventListener('progress', this.handleProgress) request.addEventListener('load', this.handleLoad) request.addEventListener('error', this.handleError) + request.addEventListener('abort', this.handleAbort) } + // TODO: 'progress' event not being fired often enough? handleProgress = event => { if (!event.lengthComputable) return @@ -43,12 +45,18 @@ class Upload extends React.Component { } } - handlError = event => { + handleError = event => { this.setState({ error: 'There was an error' }) } + handleAbort = event => { + this.setState({ + error: 'The upload was cancelled' + }) + } + render () { const { file } = this.props const { progress, error } = this.state -- GitLab