From 96ad8cb1140f5295551154920aa215527056559d Mon Sep 17 00:00:00 2001 From: hmhealey Date: Mon, 10 Aug 2015 13:15:01 -0400 Subject: Changed file upload components to properly remove previews for failed uploads --- web/react/components/create_comment.jsx | 19 +++++++++++++++++-- web/react/components/create_post.jsx | 19 +++++++++++++++++-- web/react/components/file_upload.jsx | 4 ++-- 3 files changed, 36 insertions(+), 6 deletions(-) (limited to 'web') diff --git a/web/react/components/create_comment.jsx b/web/react/components/create_comment.jsx index c16909b8b..4df6a1820 100644 --- a/web/react/components/create_comment.jsx +++ b/web/react/components/create_comment.jsx @@ -132,8 +132,23 @@ module.exports = React.createClass({ this.setState({uploadsInProgress: draft['uploadsInProgress'], previews: draft['previews']}); }, - handleUploadError: function(err) { - this.setState({ server_error: err }); + handleUploadError: function(err, clientId) { + var draft = PostStore.getCommentDraft(this.props.rootId); + if (!draft) { + draft = {}; + draft['message'] = ''; + draft['uploadsInProgress'] = []; + draft['previews'] = []; + } + + var index = draft['uploadsInProgress'].indexOf(clientId); + if (index != -1) { + draft['uploadsInProgress'].splice(index, 1); + } + + PostStore.storeCommentDraft(this.props.rootId, draft); + + this.setState({uploadsInProgress: draft['uploadsInProgress'], server_error: err}); }, clearPreviews: function() { this.setState({previews: []}); diff --git a/web/react/components/create_post.jsx b/web/react/components/create_post.jsx index a4107d4fc..55b2ae5c5 100644 --- a/web/react/components/create_post.jsx +++ b/web/react/components/create_post.jsx @@ -165,8 +165,23 @@ module.exports = React.createClass({ this.setState({uploadsInProgress: draft['uploadsInProgress'], previews: draft['previews']}); }, - handleUploadError: function(err) { - this.setState({ server_error: err }); + handleUploadError: function(err, clientId) { + var draft = PostStore.getDraft(this.state.channel_id); + if (!draft) { + draft = {}; + draft['message'] = ''; + draft['uploadsInProgress'] = []; + draft['previews'] = []; + } + + var index = draft['uploadsInProgress'].indexOf(clientId); + if (index != -1) { + draft['uploadsInProgress'].splice(index, 1); + } + + PostStore.storeDraft(this.state.channel_id, draft); + + this.setState({uploadsInProgress: draft['uploadsInProgress'], server_error: err}); }, removePreview: function(id) { var previews = this.state.previews; diff --git a/web/react/components/file_upload.jsx b/web/react/components/file_upload.jsx index 4b8965dcb..21e21a58a 100644 --- a/web/react/components/file_upload.jsx +++ b/web/react/components/file_upload.jsx @@ -60,7 +60,7 @@ module.exports = React.createClass({ this.setState({requests: requests}); }.bind(this), function(err) { - this.props.onUploadError(err); + this.props.onUploadError(err, clientId); }.bind(this) ); @@ -151,7 +151,7 @@ module.exports = React.createClass({ self.setState({requests: requests}); }, function(err) { - self.props.onUploadError(err); + self.props.onUploadError(err, clientId); } ); -- cgit v1.2.3-1-g7c22