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