Web: Files: disabled switching to shared folder
This commit is contained in:
parent
eb66d3bf57
commit
3906f27d50
@ -2,21 +2,12 @@ import React from "react";
|
|||||||
import TreeMenu from "@docspace/components/tree-menu";
|
import TreeMenu from "@docspace/components/tree-menu";
|
||||||
import TreeNode from "@docspace/components/tree-menu/sub-components/tree-node";
|
import TreeNode from "@docspace/components/tree-menu/sub-components/tree-node";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
import {
|
import { FolderType, ShareAccessRights } from "@docspace/common/constants";
|
||||||
ConflictResolveType,
|
|
||||||
FolderType,
|
|
||||||
ShareAccessRights,
|
|
||||||
} from "@docspace/common/constants";
|
|
||||||
import toastr from "@docspace/components/toast/toastr";
|
|
||||||
|
|
||||||
import { onConvertFiles } from "../../helpers/files-converter";
|
import { onConvertFiles } from "../../helpers/files-converter";
|
||||||
import { ReactSVG } from "react-svg";
|
import { ReactSVG } from "react-svg";
|
||||||
import ExpanderDownIcon from "PUBLIC_DIR/images/expander-down.react.svg";
|
import ExpanderDownIcon from "PUBLIC_DIR/images/expander-down.react.svg";
|
||||||
import ExpanderRightIcon from "PUBLIC_DIR/images/expander-right.react.svg";
|
import ExpanderRightIcon from "PUBLIC_DIR/images/expander-right.react.svg";
|
||||||
import commonIconsStyles from "@docspace/components/utils/common-icons-style";
|
import commonIconsStyles from "@docspace/components/utils/common-icons-style";
|
||||||
import withLoader from "../../HOCs/withLoader";
|
|
||||||
import Loaders from "@docspace/common/components/Loaders";
|
|
||||||
|
|
||||||
import { observer, inject } from "mobx-react";
|
import { observer, inject } from "mobx-react";
|
||||||
import { runInAction } from "mobx";
|
import { runInAction } from "mobx";
|
||||||
import { withTranslation } from "react-i18next";
|
import { withTranslation } from "react-i18next";
|
||||||
@ -181,14 +172,7 @@ class TreeFolders extends React.Component {
|
|||||||
};
|
};
|
||||||
|
|
||||||
showDragItems = (item) => {
|
showDragItems = (item) => {
|
||||||
const {
|
const { isAdmin, myId, commonId, currentId, draggableItems } = this.props;
|
||||||
isAdmin,
|
|
||||||
myId,
|
|
||||||
commonId,
|
|
||||||
//rootFolderType,
|
|
||||||
currentId,
|
|
||||||
draggableItems,
|
|
||||||
} = this.props;
|
|
||||||
if (item.id === currentId) {
|
if (item.id === currentId) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -196,10 +180,6 @@ class TreeFolders extends React.Component {
|
|||||||
if (!draggableItems || draggableItems.find((x) => x.id === item.id))
|
if (!draggableItems || draggableItems.find((x) => x.id === item.id))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// const isMy = rootFolderType === FolderType.USER;
|
|
||||||
// const isCommon = rootFolderType === FolderType.COMMON;
|
|
||||||
// const isShare = rootFolderType === FolderType.SHARE;
|
|
||||||
|
|
||||||
if (
|
if (
|
||||||
item.rootFolderType === FolderType.SHARE &&
|
item.rootFolderType === FolderType.SHARE &&
|
||||||
item.access === ShareAccessRights.FullAccess
|
item.access === ShareAccessRights.FullAccess
|
||||||
@ -208,7 +188,6 @@ class TreeFolders extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isAdmin) {
|
if (isAdmin) {
|
||||||
//if (isMy || isCommon || isShare) {
|
|
||||||
if (
|
if (
|
||||||
(item.pathParts &&
|
(item.pathParts &&
|
||||||
(item.pathParts[0] === myId || item.pathParts[0] === commonId)) ||
|
(item.pathParts[0] === myId || item.pathParts[0] === commonId)) ||
|
||||||
@ -217,24 +196,19 @@ class TreeFolders extends React.Component {
|
|||||||
) {
|
) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
//}
|
|
||||||
} else {
|
} else {
|
||||||
//if (isMy || isCommon || isShare) {
|
|
||||||
if (
|
if (
|
||||||
(item.pathParts && item.pathParts[0] === myId) ||
|
(item.pathParts && item.pathParts[0] === myId) ||
|
||||||
item.rootFolderType === FolderType.USER
|
item.rootFolderType === FolderType.USER
|
||||||
) {
|
) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
getItems = (data) => {
|
getItems = (data) => {
|
||||||
const { theme } = this.props;
|
|
||||||
|
|
||||||
return data.map((item) => {
|
return data.map((item) => {
|
||||||
const dragging = this.props.dragging ? this.showDragItems(item) : false;
|
const dragging = this.props.dragging ? this.showDragItems(item) : false;
|
||||||
const showBadge = false;
|
const showBadge = false;
|
||||||
@ -245,9 +219,18 @@ class TreeFolders extends React.Component {
|
|||||||
disableNodeValue = "";
|
disableNodeValue = "";
|
||||||
if (dragging) value = `${item.id} dragging ${provider}`;
|
if (dragging) value = `${item.id} dragging ${provider}`;
|
||||||
|
|
||||||
|
const { roomsFolderId, expandedPanelKeys } = this.props;
|
||||||
|
|
||||||
|
let isDisabledNode = false;
|
||||||
|
if (item.id == roomsFolderId) {
|
||||||
|
isDisabledNode = expandedPanelKeys.includes(roomsFolderId + "");
|
||||||
|
}
|
||||||
|
|
||||||
if (this.selectionFoldersId && this.selectionFoldersId.includes(item.id))
|
if (this.selectionFoldersId && this.selectionFoldersId.includes(item.id))
|
||||||
disableNodeValue = "disable-node";
|
disableNodeValue = "disable-node";
|
||||||
|
|
||||||
|
if (isDisabledNode) disableNodeValue += " disable-folder ";
|
||||||
|
|
||||||
if ((item.folders && item.folders.length > 0) || serviceFolder) {
|
if ((item.folders && item.folders.length > 0) || serviceFolder) {
|
||||||
return (
|
return (
|
||||||
<TreeNode
|
<TreeNode
|
||||||
@ -397,7 +380,7 @@ class TreeFolders extends React.Component {
|
|||||||
};
|
};
|
||||||
|
|
||||||
onLoadData = (treeNode, isExpand) => {
|
onLoadData = (treeNode, isExpand) => {
|
||||||
const { data: incomingDate, certainFolders } = this.props;
|
const { data: incomingDate, certainFolders, roomsFolderId } = this.props;
|
||||||
isExpand && this.setState({ isExpand: true });
|
isExpand && this.setState({ isExpand: true });
|
||||||
//console.log("load data...", treeNode);
|
//console.log("load data...", treeNode);
|
||||||
|
|
||||||
@ -421,6 +404,12 @@ class TreeFolders extends React.Component {
|
|||||||
|
|
||||||
this.getNewTreeData(treeData, listIds, data.folders, data.level);
|
this.getNewTreeData(treeData, listIds, data.folders, data.level);
|
||||||
!certainFolders && this.props.setTreeFolders(treeData);
|
!certainFolders && this.props.setTreeFolders(treeData);
|
||||||
|
|
||||||
|
if (data.listIds[0] == roomsFolderId && this.props.onSelect) {
|
||||||
|
const roomsIndex = treeData.findIndex((f) => f.id == roomsFolderId);
|
||||||
|
const firstRoomsNodeId = treeData[roomsIndex]?.folders[0]?.id;
|
||||||
|
this.props.onSelect([firstRoomsNodeId], treeNode);
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.catch((err) => console.log("err", err))
|
.catch((err) => console.log("err", err))
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
@ -439,6 +428,20 @@ class TreeFolders extends React.Component {
|
|||||||
this.props.setExpandedPanelKeys(expandedKeys);
|
this.props.setExpandedPanelKeys(expandedKeys);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
onSelect = (folder, treeNode) => {
|
||||||
|
const { onSelect, expandedPanelKeys, roomsFolderId } = this.props;
|
||||||
|
|
||||||
|
const newExpandedPanelKeys = JSON.parse(JSON.stringify(expandedPanelKeys));
|
||||||
|
newExpandedPanelKeys.push(folder[0]);
|
||||||
|
|
||||||
|
if (folder[0] == roomsFolderId) {
|
||||||
|
this.onExpand(newExpandedPanelKeys, treeNode);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
onSelect && onSelect(folder, treeNode);
|
||||||
|
};
|
||||||
|
|
||||||
onDragOver = (data) => {
|
onDragOver = (data) => {
|
||||||
const parentElement = data.event.target.parentElement;
|
const parentElement = data.event.target.parentElement;
|
||||||
const existElement = parentElement.classList.contains(
|
const existElement = parentElement.classList.contains(
|
||||||
@ -488,16 +491,15 @@ class TreeFolders extends React.Component {
|
|||||||
firstLoadScroll();
|
firstLoadScroll();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const {
|
const {
|
||||||
selectedKeys,
|
selectedKeys,
|
||||||
onSelect,
|
|
||||||
dragging,
|
dragging,
|
||||||
expandedPanelKeys,
|
expandedPanelKeys,
|
||||||
treeFolders,
|
treeFolders,
|
||||||
data,
|
data,
|
||||||
disabled,
|
disabled,
|
||||||
theme,
|
|
||||||
isPanel,
|
isPanel,
|
||||||
isLoadingNodes,
|
isLoadingNodes,
|
||||||
} = this.props;
|
} = this.props;
|
||||||
@ -514,7 +516,7 @@ class TreeFolders extends React.Component {
|
|||||||
multiple={false}
|
multiple={false}
|
||||||
showIcon
|
showIcon
|
||||||
switcherIcon={this.switcherIcon}
|
switcherIcon={this.switcherIcon}
|
||||||
onSelect={onSelect}
|
onSelect={this.onSelect}
|
||||||
selectedKeys={selectedKeys}
|
selectedKeys={selectedKeys}
|
||||||
loadData={this.onLoadData}
|
loadData={this.onLoadData}
|
||||||
expandedKeys={expandedPanelKeys}
|
expandedKeys={expandedPanelKeys}
|
||||||
@ -556,17 +558,14 @@ export default inject(
|
|||||||
getSubfolders,
|
getSubfolders,
|
||||||
setIsLoadingNodes,
|
setIsLoadingNodes,
|
||||||
isLoadingNodes,
|
isLoadingNodes,
|
||||||
|
roomsFolderId,
|
||||||
} = treeFoldersStore;
|
} = treeFoldersStore;
|
||||||
const {
|
const { id, parentId: selectedNodeParentId } = selectedFolderStore;
|
||||||
id,
|
|
||||||
parentId: selectedNodeParentId /* rootFolderType */,
|
|
||||||
} = selectedFolderStore;
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
isAdmin: auth.isAdmin,
|
isAdmin: auth.isAdmin,
|
||||||
isDesktop: auth.settingsStore.isDesktopClient,
|
isDesktop: auth.settingsStore.isDesktopClient,
|
||||||
dragging,
|
dragging,
|
||||||
//rootFolderType,
|
|
||||||
currentId: id,
|
currentId: id,
|
||||||
myId: myFolderId,
|
myId: myFolderId,
|
||||||
commonId: commonFolderId,
|
commonId: commonFolderId,
|
||||||
@ -584,6 +583,7 @@ export default inject(
|
|||||||
setIsLoadingNodes,
|
setIsLoadingNodes,
|
||||||
isLoadingNodes,
|
isLoadingNodes,
|
||||||
selectedNodeParentId,
|
selectedNodeParentId,
|
||||||
|
roomsFolderId,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
)(withTranslation(["Files", "Common"])(observer(TreeFolders)));
|
)(withTranslation(["Files", "Common"])(observer(TreeFolders)));
|
||||||
|
@ -219,6 +219,9 @@ class SelectFolderDialog extends React.Component {
|
|||||||
const folderSelectionDisabled =
|
const folderSelectionDisabled =
|
||||||
folderId === sharedRoomId || folderId === sharedRoomId?.toString();
|
folderId === sharedRoomId || folderId === sharedRoomId?.toString();
|
||||||
|
|
||||||
|
const buttonIsDisabled =
|
||||||
|
isDisableButton || (isRecycleBin && currentFolderId === folderId);
|
||||||
|
|
||||||
return displayType === "aside" ? (
|
return displayType === "aside" ? (
|
||||||
<SelectFolderDialogAsideView
|
<SelectFolderDialogAsideView
|
||||||
folderSelectionDisabled={folderSelectionDisabled}
|
folderSelectionDisabled={folderSelectionDisabled}
|
||||||
@ -244,9 +247,7 @@ class SelectFolderDialog extends React.Component {
|
|||||||
}
|
}
|
||||||
isAvailable={isAvailable}
|
isAvailable={isAvailable}
|
||||||
isDisableTree={isDisableTree}
|
isDisableTree={isDisableTree}
|
||||||
isDisableButton={
|
isDisableButton={buttonIsDisabled}
|
||||||
isDisableButton || (isRecycleBin && currentFolderId === folderId)
|
|
||||||
}
|
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<SelectionPanel
|
<SelectionPanel
|
||||||
@ -272,9 +273,7 @@ class SelectFolderDialog extends React.Component {
|
|||||||
isDisableTree={isDisableTree}
|
isDisableTree={isDisableTree}
|
||||||
folderSelection
|
folderSelection
|
||||||
newFilter={this.newFilter}
|
newFilter={this.newFilter}
|
||||||
isDisableButton={
|
isDisableButton={buttonIsDisabled}
|
||||||
isDisableButton || (isRecycleBin && currentFolderId === folderId)
|
|
||||||
}
|
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,22 @@ const StyledTree = styled(Tree)`
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.disable-folder {
|
||||||
|
span.rc-tree-node-content-wrapper {
|
||||||
|
pointer-events: none;
|
||||||
|
span.rc-tree-iconEle {
|
||||||
|
svg {
|
||||||
|
path {
|
||||||
|
fill: ${(props) => props.theme.treeNode.disableColor};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
span.rc-tree-title {
|
||||||
|
color: ${(props) => props.theme.treeNode.disableColor} !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.rc-tree-treenode {
|
.rc-tree-treenode {
|
||||||
height: 36px;
|
height: 36px;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
Loading…
Reference in New Issue
Block a user