diff options
author | hmhealey <harrisonmhealey@gmail.com> | 2015-08-10 12:05:45 -0400 |
---|---|---|
committer | hmhealey <harrisonmhealey@gmail.com> | 2015-08-10 14:04:23 -0400 |
commit | c9a1bf2d336cc5718cdf327f37cfdf87dc0e2705 (patch) | |
tree | d90cdfebf96ac6a4557a8caaefe06888b7d9d6ba /web/react/components/file_upload.jsx | |
parent | 4b74c873cc95973c5434988a41f5e06446a4e586 (diff) | |
download | chat-c9a1bf2d336cc5718cdf327f37cfdf87dc0e2705.tar.gz chat-c9a1bf2d336cc5718cdf327f37cfdf87dc0e2705.tar.bz2 chat-c9a1bf2d336cc5718cdf327f37cfdf87dc0e2705.zip |
Changed post drafts to maintain a store a unique id for each file upload to fix issues with duplicate file names
Diffstat (limited to 'web/react/components/file_upload.jsx')
-rw-r--r-- | web/react/components/file_upload.jsx | 36 |
1 files changed, 22 insertions, 14 deletions
diff --git a/web/react/components/file_upload.jsx b/web/react/components/file_upload.jsx index 11b3b3cee..4b8965dcb 100644 --- a/web/react/components/file_upload.jsx +++ b/web/react/components/file_upload.jsx @@ -39,19 +39,23 @@ module.exports = React.createClass({ continue; } + // generate a unique id that can be used by other components to refer back to this file upload + var clientId = utils.generateId(); + // Prepare data to be uploaded. formData = new FormData(); formData.append('channel_id', channel_id); formData.append('files', files[i], files[i].name); + formData.append('client_ids', clientId); var request = client.uploadFile(formData, function(data) { parsedData = $.parseJSON(data); - this.props.onFileUpload(parsedData['filenames'], channel_id); + this.props.onFileUpload(parsedData['filenames'], parsedData['client_ids'], channel_id); var requests = this.state.requests; - for (var i = 0; i < parsedData['filenames'].length; i++) { - delete requests[utils.getFileName(parsedData['filenames'][i])]; + for (var i = 0; i < parsedData['client_ids'].length; i++) { + delete requests[parsedData['client_ids'][i]]; } this.setState({requests: requests}); }.bind(this), @@ -61,10 +65,10 @@ module.exports = React.createClass({ ); var requests = this.state.requests; - requests[files[i].name] = request; + requests[clientId] = request; this.setState({requests: requests}); - this.props.onUploadStart([files[i].name], channel_id); + this.props.onUploadStart([clientId], channel_id); } // clear file input for all modern browsers @@ -123,6 +127,9 @@ module.exports = React.createClass({ var channel_id = ChannelStore.getCurrentId(); + // generate a unique id that can be used by other components to refer back to this file upload + var clientId = utils.generateId(); + formData = new FormData(); formData.append('channel_id', channel_id); var d = new Date(); @@ -130,15 +137,16 @@ module.exports = React.createClass({ var min = d.getMinutes() < 10 ? "0" + d.getMinutes() : String(d.getMinutes()); var name = "Image Pasted at "+d.getFullYear()+"-"+d.getMonth()+"-"+d.getDate()+" "+hour+"-"+min+"." + ext; formData.append('files', file, name); + formData.append('client_ids', clientId); - client.uploadFile(formData, + var request = client.uploadFile(formData, function(data) { parsedData = $.parseJSON(data); - self.props.onFileUpload(parsedData['filenames'], channel_id); + self.props.onFileUpload(parsedData['filenames'], parsedData['client_ids'], channel_id); var requests = self.state.requests; - for (var i = 0; i < parsedData['filenames'].length; i++) { - delete requests[utils.getFileName(parsedData['filenames'][i])]; + for (var i = 0; i < parsedData['client_ids'].length; i++) { + delete requests[parsedData['client_ids'][i]]; } self.setState({requests: requests}); }, @@ -148,23 +156,23 @@ module.exports = React.createClass({ ); var requests = self.state.requests; - requests[files[i].name] = request; + requests[clientId] = request; self.setState({requests: requests}); - self.props.onUploadStart([name], channel_id); + self.props.onUploadStart([clientId], channel_id); } } } }); }, - cancelUpload: function(filename) { + cancelUpload: function(clientId) { var requests = this.state.requests; - var request = requests[filename]; + var request = requests[clientId]; if (request) { request.abort(); - delete requests[filename]; + delete requests[clientId]; this.setState({requests: requests}); } }, |