1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-16 23:29:49 +00:00

Merge pull request #3892 from haiwen/repair_async_bug

Repair async bug
This commit is contained in:
杨顺强
2019-07-23 11:43:40 +08:00
committed by GitHub
3 changed files with 114 additions and 37 deletions

View File

@@ -16001,9 +16001,9 @@
}
},
"seafile-js": {
"version": "0.2.106",
"resolved": "https://registry.npmjs.org/seafile-js/-/seafile-js-0.2.106.tgz",
"integrity": "sha512-lT2gLD8hz75rlc7PW4kwW9SWe2JUywsDr5EDYYdQoPUz437i0YEq5wMIJq8jcOHaTSqgwbIfrWpVmOIs8Lkilg==",
"version": "0.2.107",
"resolved": "https://registry.npmjs.org/seafile-js/-/seafile-js-0.2.107.tgz",
"integrity": "sha512-Mv2JIs0dw7n+cXk532dKiPU1IenpwX8a7p+xs6evXJw63CX2dnYFc9xZUl27GGB4/uQ6V2UbEw7S+EqD0wfxSA==",
"requires": {
"axios": "^0.18.0",
"form-data": "^2.3.2",

View File

@@ -37,7 +37,7 @@
"react-responsive": "^6.1.2",
"react-select": "^2.4.1",
"reactstrap": "^6.4.0",
"seafile-js": "^0.2.106",
"seafile-js": "^0.2.107",
"socket.io-client": "^2.2.0",
"sw-precache-webpack-plugin": "0.11.4",
"unified": "^7.0.0",

View File

@@ -2,7 +2,7 @@ import React from 'react';
import PropTypes from 'prop-types';
import cookie from 'react-cookies';
import moment from 'moment';
import { gettext, siteRoot, username, canGenerateShareLink, canGenerateUploadLink, isDocs } from '../../utils/constants';
import { gettext, siteRoot, username, isDocs } from '../../utils/constants';
import { seafileAPI } from '../../utils/seafile-api';
import { Utils } from '../../utils/utils';
import collabServer from '../../utils/collab-server';
@@ -581,20 +581,39 @@ class LibContentView extends React.Component {
let dirNames = this.getSelectedDirentNames();
seafileAPI.moveDir(repoID, destRepo.repo_id, destDirentPath, this.state.path, dirNames).then(res => {
if (repoID !== destRepo.repo_id) {
let taskId = res.data.task_id;
seafileAPI.queryAsyncOperationProgress(taskId).then(res => {
if (res.data.failed) {
let errMessage = Utils.getMoveFailedMessage(dirNames);
toaster.danger(errMessage);
return;
}
direntPaths.forEach((direntPath, index) => {
if (this.state.currentMode === 'column') {
this.deleteTreeNode(direntPath);
}
this.moveDirent(direntPath);
});
let message = Utils.getMoveSuccessMessage(dirNames);
toaster.success(message);
}).catch(error => {
let errMessage = Utils.getErrorMsg(error);
toaster.danger(errMessage);
});
} else {
direntPaths.forEach((direntPath, index) => {
if (this.state.currentMode === 'column') {
this.deleteTreeNode(direntPath);
}
this.moveDirent(direntPath);
});
if (repoID === destRepo.repo_id) {
if (this.state.currentMode === 'column') {
this.updateMoveCopyTreeNode(destDirentPath);
}
}
let message = Utils.getMoveSuccessMessage(dirNames);
toaster.success(message);
}
}).catch((error) => {
let errMessage = Utils.getErrorMsg(error);
if (errMessage === gettext('Error')) {
@@ -610,16 +629,34 @@ class LibContentView extends React.Component {
let dirNames = this.getSelectedDirentNames();
seafileAPI.copyDir(repoID, destRepo.repo_id, destDirentPath, this.state.path, dirNames).then(res => {
if (repoID === destRepo.repo_id) {
if (this.state.currentMode === 'column') {
this.updateMoveCopyTreeNode(destDirentPath);
}
if (repoID !== destRepo.repo_id) {
let taskId = res.data.task_id;
seafileAPI.queryAsyncOperationProgress(taskId).then(res => {
if (res.data.failed) {
let errMessage = Utils.getCopyFailedMessage(dirNames);
toaster.danger(errMessage);
return;
}
if (destDirentPath === this.state.path) {
this.loadDirentList(this.state.path);
}
let message = Utils.getCopySuccessfulMessage(dirNames);
toaster.success(message);
}).catch(error => {
let errMessage = Utils.getErrorMsg(error);
toaster.danger(errMessage);
});
} else {
if (this.state.currentMode === 'column') {
this.updateMoveCopyTreeNode(destDirentPath);
}
if (destDirentPath === this.state.path) {
this.loadDirentList(this.state.path);
}
let message = Utils.getCopySuccessfulMessage(dirNames);
toaster.success(message);
}
}).catch((error) => {
let errMessage = Utils.getErrorMsg(error);
if (errMessage === gettext('Error')) {
@@ -905,17 +942,37 @@ class LibContentView extends React.Component {
}
let direntPath = Utils.joinPath(nodeParentPath, dirName);
seafileAPI.moveDir(repoID, destRepo.repo_id, moveToDirentPath, nodeParentPath, dirName).then(res => {
if (repoID !== destRepo.repo_id) {
let taskId = res.data.task_id;
seafileAPI.queryAsyncOperationProgress(taskId).then(res => {
if (res.data.failed) {
let errMessage = gettext('Failed to moved %(name)s');
errMessage = errMessage.replace('%(name)s', dirName);
toaster.danger(errMessage);
return;
}
if (this.state.currentMode === 'column') {
this.deleteTreeNode(direntPath);
if (repoID === destRepo.repo_id) {
this.updateMoveCopyTreeNode(moveToDirentPath);
}
this.moveDirent(direntPath);
let message = gettext('Successfully moved %(name)s.');
message = message.replace('%(name)s', dirName);
toaster.success(message);
}).catch(error => {
let errMessage = Utils.getErrorMsg(error);
toaster.danger(errMessage);
});
} else {
if (this.state.currentMode === 'column') {
this.deleteTreeNode(direntPath);
this.updateMoveCopyTreeNode(moveToDirentPath);
}
this.moveDirent(direntPath, moveToDirentPath);
let message = gettext('Successfully moved %(name)s.');
message = message.replace('%(name)s', dirName);
toaster.success(message);
}
}).catch((error) => {
let errMessage = Utils.getErrorMsg(error);
if (errMessage === gettext('Error')) {
@@ -936,10 +993,15 @@ class LibContentView extends React.Component {
let direntPath = Utils.joinPath(nodeParentPath, dirName);
seafileAPI.copyDir(repoID, destRepo.repo_id, copyToDirentPath, nodeParentPath, dirName).then(res => {
if (this.state.currentMode === 'column') {
if (repoID === destRepo.repo_id) {
this.updateMoveCopyTreeNode(copyToDirentPath);
}
if (repoID !== destRepo.repo_id) {
let taskId = res.data.task_id;
seafileAPI.queryAsyncOperationProgress(taskId).then(res => {
if (res.data.failed) {
let errMessage = gettext('Failed to copy %(name)s');
errMessage = errMessage.replace('%(name)s', dirName);
toaster.danger(errMessage);
return;
}
if (copyToDirentPath === nodeParentPath) {
this.loadDirentList(this.state.path);
@@ -947,6 +1009,21 @@ class LibContentView extends React.Component {
let message = gettext('Successfully copied %(name)s.');
message = message.replace('%(name)s', dirName);
toaster.success(message);
}).catch(error => {
let errMessage = Utils.getErrorMsg(error);
toaster.danger(errMessage);
});
} else {
if (this.state.currentMode === 'column') {
this.updateMoveCopyTreeNode(copyToDirentPath);
}
if (copyToDirentPath === nodeParentPath) {
this.loadDirentList(this.state.path);
}
let message = gettext('Successfully copied %(name)s.');
message = message.replace('%(name)s', dirName);
toaster.success(message);
}
}).catch((error) => {
let errMessage = Utils.getErrorMsg(error);
if (errMessage === gettext('Error')) {