1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-12 21:30:39 +00:00

Uploader bug repair (#2802)

This commit is contained in:
杨顺强
2019-01-10 11:41:53 +08:00
committed by Daniel Pan
parent 8cf7b3aa02
commit 558018005e
3 changed files with 37 additions and 12 deletions

View File

@@ -43,6 +43,8 @@ class FileUploader extends React.Component {
uploadBitrate: '0' uploadBitrate: '0'
}; };
this.uploadInput = React.createRef();
this.notifiedFolders = []; this.notifiedFolders = [];
this.timestamp = null; this.timestamp = null;
@@ -68,7 +70,7 @@ class FileUploader extends React.Component {
forceChunkSize: true, forceChunkSize: true,
}); });
this.resumable.assignBrowse(this.uploadInput, true); this.resumable.assignBrowse(this.uploadInput.current, true);
//Enable or Disable DragAnd Drop //Enable or Disable DragAnd Drop
if (this.props.dragAndDrop === true) { if (this.props.dragAndDrop === true) {
@@ -79,6 +81,12 @@ class FileUploader extends React.Component {
this.bindEventHandler(); this.bindEventHandler();
} }
componentWillUnmount = () => {
if (this.props.dragAndDrop === true) {
this.resumable.disableDropOnDocument();
}
}
bindCallbackHandler = () => { bindCallbackHandler = () => {
let {maxFilesErrorCallback, minFileSizeErrorCallback, maxFileSizeErrorCallback, fileTypeErrorCallback } = this.props; let {maxFilesErrorCallback, minFileSizeErrorCallback, maxFileSizeErrorCallback, fileTypeErrorCallback } = this.props;
@@ -197,6 +205,7 @@ class FileUploader extends React.Component {
uniqueIdentifier: resumableFile.uniqueIdentifier, uniqueIdentifier: resumableFile.uniqueIdentifier,
resumableFile: resumableFile, resumableFile: resumableFile,
progress: resumableFile.progress(), progress: resumableFile.progress(),
isSaved: false,
}; };
} }
@@ -271,6 +280,7 @@ class FileUploader extends React.Component {
if (item.resumableFile.uniqueIdentifier === resumableFile.uniqueIdentifier) { if (item.resumableFile.uniqueIdentifier === resumableFile.uniqueIdentifier) {
item.resumableFile.fileName = message.name; item.resumableFile.fileName = message.name;
item.resumableFile.relativePath = relative_path + message.name; item.resumableFile.relativePath = relative_path + message.name;
item.isSaved = true;
} }
return item; return item;
}); });
@@ -289,6 +299,14 @@ class FileUploader extends React.Component {
}; };
this.props.onFileUploadSuccess(dirent); // this contance: just one file this.props.onFileUploadSuccess(dirent); // this contance: just one file
let uploadFileList = this.state.uploadFileList.map(item => {
if (item.resumableFile.uniqueIdentifier === resumableFile.uniqueIdentifier) {
item.isSaved = true;
}
return item;
});
this.setState({uploadFileList: uploadFileList});
return; return;
} }
@@ -306,6 +324,7 @@ class FileUploader extends React.Component {
if (item.resumableFile.uniqueIdentifier === resumableFile.uniqueIdentifier) { if (item.resumableFile.uniqueIdentifier === resumableFile.uniqueIdentifier) {
item.resumableFile.fileName = message.name; item.resumableFile.fileName = message.name;
item.resumableFile.relativePath = message.name; item.resumableFile.relativePath = message.name;
item.isSaved = true;
} }
return item; return item;
}); });
@@ -379,8 +398,8 @@ class FileUploader extends React.Component {
} }
onFileUpload = () => { onFileUpload = () => {
this.uploadInput.removeAttribute('webkitdirectory'); this.uploadInput.current.removeAttribute('webkitdirectory');
this.uploadInput.click(); this.uploadInput.current.click();
let repoID = this.props.repoID; let repoID = this.props.repoID;
seafileAPI.getUploadLink(repoID, this.props.path).then(res => { seafileAPI.getUploadLink(repoID, this.props.path).then(res => {
this.resumable.opts.target = res.data; this.resumable.opts.target = res.data;
@@ -388,8 +407,8 @@ class FileUploader extends React.Component {
} }
onFolderUpload = () => { onFolderUpload = () => {
this.uploadInput.setAttribute('webkitdirectory', 'webkitdirectory'); this.uploadInput.current.setAttribute('webkitdirectory', 'webkitdirectory');
this.uploadInput.click(); this.uploadInput.current.click();
let repoID = this.props.repoID; let repoID = this.props.repoID;
seafileAPI.getUploadLink(repoID, this.props.path).then(res => { seafileAPI.getUploadLink(repoID, this.props.path).then(res => {
this.resumable.opts.target = res.data; this.resumable.opts.target = res.data;
@@ -398,13 +417,14 @@ class FileUploader extends React.Component {
onDragStart = () => { onDragStart = () => {
let repoID = this.props.repoID; let repoID = this.props.repoID;
this.uploadInput.setAttribute('webkitdirectory', 'webkitdirectory'); this.uploadInput.current.setAttribute('webkitdirectory', 'webkitdirectory');
seafileAPI.getUploadLink(repoID, this.props.path).then(res => { seafileAPI.getUploadLink(repoID, this.props.path).then(res => {
this.resumable.opts.target = res.data; this.resumable.opts.target = res.data;
}); });
} }
onCloseUploadDialog = () => { onCloseUploadDialog = () => {
this.resumable.files = [];
this.setState({isUploadProgressDialogShow: false, uploadFileList: []}); this.setState({isUploadProgressDialogShow: false, uploadFileList: []});
} }
@@ -478,7 +498,7 @@ class FileUploader extends React.Component {
<Fragment> <Fragment>
<div className="file-uploader-container"> <div className="file-uploader-container">
<div className="file-uploader"> <div className="file-uploader">
<input className="upload-input" type="file" ref={node => this.uploadInput = node} onClick={this.onClick}/> <input className="upload-input" type="file" ref={this.uploadInput} onClick={this.onClick}/>
</div> </div>
</div> </div>
{ {

View File

@@ -45,10 +45,15 @@ class UploadListItem extends React.Component {
} }
</td> </td>
<td className="upload-operation"> <td className="upload-operation">
{ progress !== 100 ? {(!item.isSaved && progress !== 100) && (
<a href="#" onClick={this.onUploadCancel}>{gettext(('cancel'))}</a> : <a href="#" onClick={this.onUploadCancel}>{gettext(('cancel'))}</a>
)}
{(!item.isSaved && progress === 100) && (
<span className="sf-font">{gettext('saving...')}</span>
)}
{item.isSaved && (
<span>{gettext('uploaded')}</span> <span>{gettext('uploaded')}</span>
} )}
</td> </td>
</tr> </tr>
); );

View File

@@ -64,9 +64,9 @@ class UploadProgressDialog extends React.Component {
<table className="table-thead-hidden"> <table className="table-thead-hidden">
<thead> <thead>
<tr> <tr>
<th width="50%">{gettext('name')}</th> <th width="45%">{gettext('name')}</th>
<th width="40%">{gettext('progress')}</th> <th width="40%">{gettext('progress')}</th>
<th width="10%">{gettext('state')}</th> <th width="15%">{gettext('state')}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>