diff --git a/frontend/src/components/dialog/upload-remind-dialog.js b/frontend/src/components/dialog/upload-remind-dialog.js
index 774eeac541..4b561f7e1e 100644
--- a/frontend/src/components/dialog/upload-remind-dialog.js
+++ b/frontend/src/components/dialog/upload-remind-dialog.js
@@ -12,10 +12,21 @@ const propTypes = {
class UploadRemindDialog extends React.Component {
- toggle = () => {
+ toggle = (e) => {
+ e.nativeEvent.stopImmediatePropagation();
this.props.cancelFileUpload();
}
+ replaceRepetitionFile = (e) => {
+ e.nativeEvent.stopImmediatePropagation();
+ this.props.replaceRepetitionFile();
+ }
+
+ uploadFile = (e) => {
+ e.nativeEvent.stopImmediatePropagation();
+ this.props.uploadFile();
+ }
+
render() {
let title = gettext('Replace file {filename}?');
@@ -28,8 +39,8 @@ class UploadRemindDialog extends React.Component {
-
+ {
+ this.state.isUploadRemindDialogShow &&
+
+ }
+ {
+ this.state.isUploadProgressDialogShow &&
+
+ }
+
);
}
}
diff --git a/frontend/src/models/dirent.js b/frontend/src/models/dirent.js
index 62766aadb1..d78a8fcf9c 100644
--- a/frontend/src/models/dirent.js
+++ b/frontend/src/models/dirent.js
@@ -13,8 +13,8 @@ class Dirent {
this.isSelected = false; // is check or not
if (json.type === 'file') {
this.size = Utils.bytesToSize(json.size);
- this.starred = json.starred;
- this.is_locked = json.is_locked;
+ this.starred = json.starred || false;
+ this.is_locked = json.is_locked || false;
this.lock_time = moment.unix(json.lock_time).fromNow();
this.lock_owner= json.lock_owner;
this.locked_by_me = json.locked_by_me;
diff --git a/frontend/src/pages/repo-wiki-mode/main-panel.js b/frontend/src/pages/repo-wiki-mode/main-panel.js
index 0a159101c2..0a90ab48cb 100644
--- a/frontend/src/pages/repo-wiki-mode/main-panel.js
+++ b/frontend/src/pages/repo-wiki-mode/main-panel.js
@@ -53,6 +53,7 @@ const propTypes = {
onItemsCopy: PropTypes.func.isRequired,
onItemsDelete: PropTypes.func.isRequired,
onLinkClick: PropTypes.func.isRequired,
+ onFileUploadSuccess: PropTypes.func.isRequired,
isDraft: PropTypes.bool,
hasDraft: PropTypes.bool,
reviewStatus: PropTypes.any,
@@ -146,8 +147,8 @@ class MainPanel extends Component {
this.uploader.onFolderUpload();
}
- onFileUploadSuccess = (file) => {
- // todo
+ onFileUploadSuccess = (direntObject) => {
+ this.props.onFileUploadSuccess(direntObject);
}
handlePageScroll = () => {
@@ -291,8 +292,8 @@ class MainPanel extends Component {
dragAndDrop={true}
path={this.props.path}
repoID={repoID}
- onFileUploadSuccess={this.onFileUploadSuccess}
direntList={this.props.direntList}
+ onFileUploadSuccess={this.onFileUploadSuccess}
/>
}
diff --git a/frontend/src/repo-wiki-mode.js b/frontend/src/repo-wiki-mode.js
index 7ad1363758..1df02923e4 100644
--- a/frontend/src/repo-wiki-mode.js
+++ b/frontend/src/repo-wiki-mode.js
@@ -556,6 +556,32 @@ class Wiki extends Component {
this.setState({direntList: direntList});
}
+ onFileUploadSuccess = (direntObject) => {
+ let isExist = this.state.direntList.some(item => {
+ return item.name === direntObject.name && item.type === direntObject.type;
+ });
+ if (isExist) {
+ let direntList = this.state.direntList;
+ for (let i = 0; i < direntList.length; i++) {
+ let dirent = direntList[i];
+ if (dirent.name === direntObject.name && dirent.type === direntObject.type) {
+ let mtime = moment.unix(direntObject.mtime).fromNow();
+ this.updateDirent(dirent, 'mtime', mtime); // todo file size is need update too, api is not return;
+ break;
+ }
+ }
+ } else {
+ direntObject.permission = 'rw';
+ let dirent = new Dirent(direntObject);
+ this.addNodeToTree(dirent.name, this.state.path, dirent.type);
+ if (direntObject.type === 'dir') {
+ this.setState({direntList: [dirent, ...this.state.direntList]});
+ } else {
+ this.setState({direntList: [...this.state.direntList, dirent]});
+ }
+ }
+ }
+
onMoveItems = (destRepo, destDirentPath) => {
let direntPaths = this.getSelectedDirentPaths();
let dirNames = this.getSelectedDirentNames();
@@ -937,6 +963,7 @@ class Wiki extends Component {
onItemsMove={this.onMoveItems}
onItemsCopy={this.onCopyItems}
onItemsDelete={this.onDeleteItems}
+ onFileUploadSuccess={this.onFileUploadSuccess}
hash={this.hash}
isDraft={this.state.isDraft}
hasDraft={this.state.hasDraft}