summaryrefslogtreecommitdiffstats
path: root/web/react/components/file_upload.jsx
diff options
context:
space:
mode:
authorReed Garmsen <rgarmsen2295@gmail.com>2015-08-12 12:47:29 -0700
committerReed Garmsen <rgarmsen2295@gmail.com>2015-08-12 12:47:29 -0700
commit0f1c9917271d8e28c55b8d930ac9057ef19e5862 (patch)
tree9acb89e3b44a9665325f6b5768464b5838aab444 /web/react/components/file_upload.jsx
parent596e76d40418465c80fadb640450ee4d37bc4e1e (diff)
downloadchat-0f1c9917271d8e28c55b8d930ac9057ef19e5862.tar.gz
chat-0f1c9917271d8e28c55b8d930ac9057ef19e5862.tar.bz2
chat-0f1c9917271d8e28c55b8d930ac9057ef19e5862.zip
Updated feature to work with new upload cancel logic
Diffstat (limited to 'web/react/components/file_upload.jsx')
-rw-r--r--web/react/components/file_upload.jsx39
1 files changed, 32 insertions, 7 deletions
diff --git a/web/react/components/file_upload.jsx b/web/react/components/file_upload.jsx
index 7918b42ec..641a888c7 100644
--- a/web/react/components/file_upload.jsx
+++ b/web/react/components/file_upload.jsx
@@ -91,24 +91,49 @@ module.exports = React.createClass({
if (typeof files !== 'string' && files.length) {
var numFiles = files.length;
- var numToUpload = this.props.setUploads(numFiles);
- for (var i = 0; i < numFiles && i < numToUpload; i++) {
- var file = files[i];
+ var numToUpload = Math.min(Constants.MAX_UPLOAD_FILES - this.props.getFileCount(channelId), numFiles);
+ if (numFiles > numToUpload) {
+ this.props.onUploadError('Uploads limited to ' + Constants.MAX_UPLOAD_FILES + ' files maximum. Please use additional posts for more files.');
+ }
+
+ for (var i = 0; i < files.length && i < numToUpload; i++) {
+ if (files[i].size > Constants.MAX_FILE_SIZE) {
+ this.props.onUploadError('Files must be no more than ' + Constants.MAX_FILE_SIZE / 1000000 + ' MB');
+ 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.
var formData = new FormData();
formData.append('channel_id', channelId);
- formData.append('files', file, file.name);
+ formData.append('files', files[i], files[i].name);
+ formData.append('client_ids', clientId);
- client.uploadFile(formData,
+ var request = client.uploadFile(formData,
function(data) {
var parsedData = $.parseJSON(data);
- this.props.onFileUpload(parsedData.filenames, channelId);
+ this.props.onFileUpload(parsedData['filenames'], parsedData['client_ids'], channelId);
+
+ var requests = this.state.requests;
+ for (var i = 0; i < parsedData['client_ids'].length; i++) {
+ delete requests[parsedData['client_ids'][i]];
+ }
+ this.setState({requests: requests});
}.bind(this),
function(err) {
- this.props.onUploadError(err);
+ this.props.onUploadError(err, clientId);
}.bind(this)
);
+
+ var requests = this.state.requests;
+ requests[clientId] = request;
+ this.setState({requests: requests});
+
+ this.props.onUploadStart([clientId], channelId);
}
}
},