Web: Files: disabled switching to shared folder

This commit is contained in:
Nikita Gopienko 2022-09-28 13:44:06 +03:00
parent eb66d3bf57
commit 3906f27d50
3 changed files with 58 additions and 43 deletions

View File

@ -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)));

View File

@ -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)
}
/> />
); );
} }

View File

@ -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;