Web: Files: fixed files operations
This commit is contained in:
parent
cedca7b3c3
commit
3385d0b2f5
@ -23,6 +23,7 @@ import {
|
||||
getIsMyFolder,
|
||||
getMyFolderId,
|
||||
getShareFolderId,
|
||||
getRootFolderId,
|
||||
} from "../../../store/files/selectors";
|
||||
const { isAdmin } = initStore.auth.selectors;
|
||||
|
||||
@ -147,15 +148,17 @@ class TreeFolders extends React.Component {
|
||||
isAdmin,
|
||||
myId,
|
||||
commonId,
|
||||
isCommon,
|
||||
isMy,
|
||||
isShare,
|
||||
rootFolderId,
|
||||
currentId,
|
||||
} = this.props;
|
||||
if (item.id === currentId) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const isMy = rootFolderId === FolderType.USER;
|
||||
const isCommon = rootFolderId === FolderType.COMMON;
|
||||
const isShare = rootFolderId === FolderType.SHARE;
|
||||
|
||||
if (
|
||||
item.rootFolderType === FolderType.SHARE &&
|
||||
item.access === ShareAccessRights.FullAccess
|
||||
@ -439,15 +442,13 @@ function mapStateToProps(state) {
|
||||
return {
|
||||
treeFolders: getTreeFolders(state),
|
||||
filter: getFilter(state),
|
||||
isMy: getIsMyFolder(state),
|
||||
isCommon: getIsCommonFolder(state),
|
||||
isShare: getIsShareFolder(state),
|
||||
myId: getMyFolderId(state),
|
||||
commonId: getShareFolderId(state),
|
||||
currentId: getSelectedFolderId(state),
|
||||
isAdmin: isAdmin(state),
|
||||
dragging: getDragging(state),
|
||||
updateTree: getUpdateTree(state),
|
||||
rootFolderId: getRootFolderId(state),
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -7,7 +7,7 @@ import {
|
||||
Button,
|
||||
Text,
|
||||
Checkbox,
|
||||
Scrollbar
|
||||
Scrollbar,
|
||||
} from "asc-web-components";
|
||||
import { withTranslation } from "react-i18next";
|
||||
import { api, utils, toastr } from "asc-web-common";
|
||||
@ -16,7 +16,7 @@ import {
|
||||
setTreeFolders,
|
||||
setProgressBarData,
|
||||
clearProgressData,
|
||||
setUpdateTree
|
||||
setUpdateTree,
|
||||
} from "../../../store/files/actions";
|
||||
import {
|
||||
loopTreeFolders,
|
||||
@ -24,11 +24,12 @@ import {
|
||||
getFilter,
|
||||
getTreeFolders,
|
||||
getIsLoading,
|
||||
getIsRecycleBinFolder,
|
||||
} from "../../../store/files/selectors";
|
||||
import { createI18N } from "../../../helpers/i18n";
|
||||
const i18n = createI18N({
|
||||
page: "DeleteDialog",
|
||||
localesPath: "dialogs/DeleteDialog"
|
||||
localesPath: "dialogs/DeleteDialog",
|
||||
});
|
||||
|
||||
const { files } = api;
|
||||
@ -57,7 +58,7 @@ class DeleteDialogComponent extends React.Component {
|
||||
this.state = { foldersList, filesList, selection };
|
||||
}
|
||||
|
||||
loopDeleteOperation = id => {
|
||||
loopDeleteOperation = (id) => {
|
||||
const {
|
||||
currentFolderId,
|
||||
filter,
|
||||
@ -68,28 +69,29 @@ class DeleteDialogComponent extends React.Component {
|
||||
clearProgressData,
|
||||
t,
|
||||
fetchFiles,
|
||||
setUpdateTree
|
||||
setUpdateTree,
|
||||
} = this.props;
|
||||
const successMessage = "Files and folders was deleted";
|
||||
api.files.getProgress()
|
||||
.then(res => {
|
||||
const currentProcess = res.find(x => x.id === id);
|
||||
api.files
|
||||
.getProgress()
|
||||
.then((res) => {
|
||||
const currentProcess = res.find((x) => x.id === id);
|
||||
if (currentProcess && currentProcess.progress !== 100) {
|
||||
setProgressBarData({
|
||||
percent: currentProcess.progress,
|
||||
label: t("DeleteOperation"),
|
||||
visible: true
|
||||
visible: true,
|
||||
});
|
||||
setTimeout(() => this.loopDeleteOperation(id), 1000);
|
||||
} else {
|
||||
setProgressBarData({
|
||||
percent: 100,
|
||||
label: t("DeleteOperation"),
|
||||
visible: true
|
||||
visible: true,
|
||||
});
|
||||
setTimeout(() => clearProgressData(), 5000);
|
||||
fetchFiles(currentFolderId, filter).then(data => {
|
||||
if (!isRecycleBinFolder) {
|
||||
fetchFiles(currentFolderId, filter).then((data) => {
|
||||
if (!isRecycleBinFolder && !!this.state.foldersList.length) {
|
||||
const path = data.selectedFolder.pathParts.slice(0);
|
||||
const newTreeFolders = treeFolders;
|
||||
const folders = data.selectedFolder.folders;
|
||||
@ -102,14 +104,20 @@ class DeleteDialogComponent extends React.Component {
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
.catch((err) => {
|
||||
toastr.error(err);
|
||||
clearProgressData();
|
||||
});
|
||||
};
|
||||
|
||||
onDelete = () => {
|
||||
const { isRecycleBinFolder, onClose, t, setProgressBarData, clearProgressData } = this.props;
|
||||
const {
|
||||
isRecycleBinFolder,
|
||||
onClose,
|
||||
t,
|
||||
setProgressBarData,
|
||||
clearProgressData,
|
||||
} = this.props;
|
||||
const { selection } = this.state;
|
||||
|
||||
const deleteAfter = true; //Delete after finished
|
||||
@ -133,23 +141,23 @@ class DeleteDialogComponent extends React.Component {
|
||||
setProgressBarData({
|
||||
visible: true,
|
||||
label: t("DeleteOperation"),
|
||||
percent: 0
|
||||
percent: 0,
|
||||
});
|
||||
|
||||
files
|
||||
.removeFiles(folderIds, fileIds, deleteAfter, immediately)
|
||||
.then(res => {
|
||||
.then((res) => {
|
||||
const id = res[0] && res[0].id ? res[0].id : null;
|
||||
this.loopDeleteOperation(id);
|
||||
})
|
||||
.catch(err => {
|
||||
.catch((err) => {
|
||||
toastr.error(err);
|
||||
clearProgressData();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
onChange = event => {
|
||||
onChange = (event) => {
|
||||
const value = event.target.value.split("/");
|
||||
const fileType = value[0];
|
||||
const id = Number(value[1]);
|
||||
@ -157,11 +165,11 @@ class DeleteDialogComponent extends React.Component {
|
||||
const newSelection = this.state.selection;
|
||||
|
||||
if (fileType !== "undefined") {
|
||||
const a = newSelection.find(x => x.id === id && x.fileExst);
|
||||
const a = newSelection.find((x) => x.id === id && x.fileExst);
|
||||
a.checked = !a.checked;
|
||||
this.setState({ selection: newSelection });
|
||||
} else {
|
||||
const a = newSelection.find(x => x.id === id && !x.fileExst);
|
||||
const a = newSelection.find((x) => x.id === id && !x.fileExst);
|
||||
a.checked = !a.checked;
|
||||
this.setState({ selection: newSelection });
|
||||
}
|
||||
@ -171,7 +179,7 @@ class DeleteDialogComponent extends React.Component {
|
||||
const { onClose, visible, t, isLoading } = this.props;
|
||||
const { filesList, foldersList, selection } = this.state;
|
||||
|
||||
const checkedSelections = selection.filter(x => x.checked === true);
|
||||
const checkedSelections = selection.filter((x) => x.checked === true);
|
||||
|
||||
const questionMessage =
|
||||
checkedSelections.length === 1
|
||||
@ -263,20 +271,24 @@ class DeleteDialogComponent extends React.Component {
|
||||
|
||||
const ModalDialogContainerTranslated = withTranslation()(DeleteDialogComponent);
|
||||
|
||||
const DeleteDialog = props => (
|
||||
const DeleteDialog = (props) => (
|
||||
<ModalDialogContainerTranslated i18n={i18n} {...props} />
|
||||
);
|
||||
|
||||
const mapStateToProps = state => {
|
||||
const mapStateToProps = (state) => {
|
||||
return {
|
||||
currentFolderId: getSelectedFolderId(state),
|
||||
filter: getFilter(state),
|
||||
treeFolders: getTreeFolders(state),
|
||||
isLoading: getIsLoading(state)
|
||||
isLoading: getIsLoading(state),
|
||||
isRecycleBinFolder: getIsRecycleBinFolder(state),
|
||||
};
|
||||
};
|
||||
|
||||
export default connect(
|
||||
mapStateToProps,
|
||||
{ setTreeFolders, setProgressBarData, clearProgressData, setUpdateTree, fetchFiles }
|
||||
)(withRouter(DeleteDialog));
|
||||
export default connect(mapStateToProps, {
|
||||
setTreeFolders,
|
||||
setProgressBarData,
|
||||
clearProgressData,
|
||||
setUpdateTree,
|
||||
fetchFiles,
|
||||
})(withRouter(DeleteDialog));
|
||||
|
@ -289,7 +289,7 @@ class SectionBodyContent extends React.Component {
|
||||
filter,
|
||||
treeFolders,
|
||||
setTreeFolders,
|
||||
currentFolderType,
|
||||
isRecycleBin,
|
||||
t,
|
||||
setProgressBarData,
|
||||
fetchFiles,
|
||||
@ -312,7 +312,7 @@ class SectionBodyContent extends React.Component {
|
||||
});
|
||||
fetchFiles(folderId, filter)
|
||||
.then((data) => {
|
||||
if (currentFolderType !== "Trash" && isFolder) {
|
||||
if (!isRecycleBin && isFolder) {
|
||||
const path = data.selectedFolder.pathParts.slice(0);
|
||||
const newTreeFolders = treeFolders;
|
||||
const folders = data.selectedFolder.folders;
|
||||
@ -1395,7 +1395,7 @@ class SectionBodyContent extends React.Component {
|
||||
: `folder_${item.id}`;
|
||||
value += draggable ? "_draggable" : "";
|
||||
let classNameProp =
|
||||
isFolder && item.access < 2 ? { className: " dropable" } : {};
|
||||
isFolder && item.access < 2 && !isRecycleBin ? { className: " dropable" } : {};
|
||||
|
||||
if(item.draggable) classNameProp.className += " draggable";
|
||||
|
||||
@ -1454,7 +1454,7 @@ class SectionBodyContent extends React.Component {
|
||||
const checkedProps = isEdit || item.id <= 0 ? {} : { checked };
|
||||
const element = this.getItemIcon(item, isEdit || item.id <= 0);
|
||||
let classNameProp =
|
||||
isFolder && item.access < 2 ? { className: " dropable" } : { className: "" };
|
||||
isFolder && item.access < 2 && !isRecycleBin ? { className: " dropable" } : { className: "" };
|
||||
|
||||
if(item.draggable) classNameProp.className += " draggable";
|
||||
|
||||
|
@ -434,7 +434,8 @@ class PureHome extends React.Component {
|
||||
progressData,
|
||||
viewAs,
|
||||
convertDialogVisible,
|
||||
fileActionId
|
||||
fileActionId,
|
||||
isRecycleBin
|
||||
} = this.props;
|
||||
|
||||
// const progressBarContent = (
|
||||
@ -476,7 +477,7 @@ class PureHome extends React.Component {
|
||||
<PageLayout
|
||||
withBodyScroll
|
||||
withBodyAutoFocus={!isMobile}
|
||||
uploadFiles
|
||||
uploadFiles={!isRecycleBin}
|
||||
onDrop={this.onDrop}
|
||||
setSelections={this.setSelections}
|
||||
onMouseMove={this.onMouseMove}
|
||||
|
@ -302,7 +302,7 @@ export const loopTreeFolders = (
|
||||
addTreeFolder(folders, newItems, foldersCount);
|
||||
} else if (folders.length < foldersLength) {
|
||||
removeTreeFolder(folders, newItems, foldersCount);
|
||||
} else if (folders.length > 0 && newItems.folders.length > 0) {
|
||||
} else if (folders.length > 0 && newItems.folders.length > 0 && currentFolder) {
|
||||
renameTreeFolder(folders, newItems, currentFolder);
|
||||
} else {
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user