Fixes mm-1912 move get file info into its own web service call

Этот коммит содержится в:
=Corey Hulen
2015-08-24 15:03:52 -07:00
родитель 930488f002
Коммит 64b179ab0e
7 изменённых файлов: 131 добавлений и 35 удалений

Просмотреть файл

@@ -2,6 +2,7 @@
// See License.txt for license information.
var utils = require('../utils/utils.jsx');
var Client = require('../utils/client.jsx');
var Constants = require('../utils/constants.jsx');
module.exports = React.createClass({
@@ -103,12 +104,16 @@ module.exports = React.createClass({
if (this.state.fileSize < 0) {
var self = this;
// asynchronously request the size of the file so that we can display it next to the thumbnail
utils.getFileSize(utils.getFileUrl(filename), function(fileSize) {
if (self.canSetState) {
self.setState({fileSize: fileSize});
Client.getFileInfo(
filename,
function(data) {
if (self.canSetState) {
self.setState({fileSize: parseInt(data["size"], 10)});
}
},
function(err) {
}
});
);
} else {
fileSizeString = utils.fileSizeToString(this.state.fileSize);
}

Просмотреть файл

@@ -229,13 +229,18 @@ module.exports = React.createClass({
if (!(filename in this.state.fileSizes)) {
var self = this;
utils.getFileSize(utils.getFileUrl(filename), function fileSizeOp(fileSize) {
if (self.canSetState) {
var fileSizes = self.state.fileSizes;
fileSizes[filename] = fileSize;
self.setState(fileSizes);
Client.getFileInfo(
filename,
function(data) {
if (self.canSetState) {
var fileSizes = self.state.fileSizes;
fileSizes[filename] = parseInt(data["size"], 10);
self.setState(fileSizes);
}
},
function(err) {
}
});
);
}
}
} else {

Просмотреть файл

@@ -831,6 +831,20 @@ module.exports.uploadFile = function(formData, success, error) {
return request;
};
module.exports.getFileInfo = function(filename, success, error) {
$.ajax({
url: '/api/v1/files/get_info' + filename,
dataType: 'json',
contentType: 'application/json',
type: 'GET',
success: success,
error: function onError(xhr, status, err) {
var e = handleError('getFileInfo', xhr, status, err);
error(e);
}
});
};
module.exports.getPublicLink = function(data, success, error) {
$.ajax({
url: '/api/v1/files/get_public_link',

Просмотреть файл

@@ -604,23 +604,6 @@ module.exports.splitFileLocation = function(fileLocation) {
return {ext: ext, name: filename, path: filePath};
};
// Asynchronously gets the size of a file by requesting its headers. If successful, it calls the
// provided callback with the file size in bytes as the argument.
module.exports.getFileSize = function(url, callback) {
var request = new XMLHttpRequest();
request.open('HEAD', url, true);
request.onreadystatechange = function onReadyStateChange() {
if (request.readyState === 4 && request.status === 200) {
if (callback) {
callback(parseInt(request.getResponseHeader('content-length'), 10));
}
}
};
request.send();
};
module.exports.toTitleCase = function(str) {
function doTitleCase(txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();