Merge branch 'release/v1.2' of https://github.com/ONLYOFFICE/AppServer into release/v1.2

This commit is contained in:
Maria Sukhova 2022-05-19 18:05:24 +03:00
commit 9601e64d0e
7 changed files with 65 additions and 42 deletions

View File

@ -125,6 +125,7 @@ export default function withFileActions(WrappedFileItem) {
if (
(e && e.target.tagName === "INPUT") ||
!!e.target.closest(".lock-file") ||
!!e.target.closest(".additional-badges") ||
isTrashFolder
)
return;

View File

@ -223,8 +223,9 @@ class TreeFolders extends React.Component {
};
getItems = (data) => {
const { withoutProvider, theme, parentId, setIsLoadingNodes } = this.props;
return data.map((item, index) => {
const { withoutProvider, theme } = this.props;
return data.map((item) => {
const dragging = this.props.dragging ? this.showDragItems(item) : false;
const showBadge = item.newItems
@ -240,23 +241,6 @@ class TreeFolders extends React.Component {
let value = "";
if (dragging) value = `${item.id} dragging ${provider}`;
if (this.needScroll) {
if (parentId && item.parentId.toString() === parentId.toString()) {
if (index === this.childLength) {
setIsLoadingNodes(false);
const selectedNode = document.getElementsByClassName(
"rc-tree-node-selected"
)[0];
if (selectedNode) {
this.needScroll = false;
document
.querySelector("#folder-tree-scroll-bar > .scroll-body")
.scrollTo(0, selectedNode.offsetTop + index * 36);
}
}
}
}
if ((item.folders && item.folders.length > 0) || serviceFolder) {
return (
<TreeNode
@ -347,13 +331,9 @@ class TreeFolders extends React.Component {
};
getNewTreeData(treeData, curId, child, pos) {
const { parentId, setIsLoadingNodes } = this.props;
this.childLength = null;
!this.expand && parentId && setIsLoadingNodes(true);
if (!this.expand && parentId && curId.toString() === parentId?.toString()) {
this.needScroll = true;
this.childLength = child.length - 1;
}
const { selectedNodeParentId, setIsLoadingNodes } = this.props;
!this.expand && selectedNodeParentId && setIsLoadingNodes(true);
this.loop(treeData, child, pos);
this.setLeaf(treeData, curId, 10);
}
@ -380,14 +360,14 @@ class TreeFolders extends React.Component {
}
generateTreeNodes = (treeNode) => {
const folderId = treeNode.props.id;
const level = treeNode.props.pos;
const folderId = treeNode.id;
const level = treeNode.pos;
let arrayFolders;
return this.props.getSubfolders(folderId).then((data) => {
arrayFolders = data;
const folderIndex = treeNode.props.pos;
const folderIndex = treeNode.pos;
let i = 0;
for (let item of arrayFolders) {
@ -411,12 +391,12 @@ class TreeFolders extends React.Component {
return this.generateTreeNodes(treeNode)
.then((data) => {
const itemId = treeNode.props.id.toString();
const itemId = treeNode.id.toString();
const listIds = data.listIds;
listIds.push(itemId);
const treeData = certainFolders
? incomingDate
? [...incomingDate]
: [...this.props.treeFolders];
this.getNewTreeData(treeData, listIds, data.folders, data.level);
@ -430,7 +410,6 @@ class TreeFolders extends React.Component {
};
onExpand = (expandedKeys, treeNode) => {
this.needScroll = false;
this.expand = true;
if (treeNode.node && !treeNode.node.children) {
if (treeNode.expanded) {
@ -481,7 +460,18 @@ class TreeFolders extends React.Component {
promise.then((files) => onTreeDrop(files, id));
//}
};
onLoad = (loadedKeys, options) => {
const { firstLoadScroll, selectedNodeParentId } = this.props;
//console.log("onLoad tree nodes", "loadedKeys", treeNode, "options", options);
if (
!this.expand &&
selectedNodeParentId &&
loadedKeys.includes(selectedNodeParentId.toString())
) {
firstLoadScroll();
}
};
render() {
const {
selectedKeys,
@ -521,6 +511,7 @@ class TreeFolders extends React.Component {
gapBetweenNodesTablet="26"
isFullFillSelection={false}
childrenCount={expandedPanelKeys?.length}
onLoad={this.onLoad}
>
{this.getItems(data || treeFolders)}
</StyledTreeMenu>
@ -558,7 +549,10 @@ export default inject(
setIsLoadingNodes,
isLoadingNodes,
} = treeFoldersStore;
const { id /* rootFolderType */ } = selectedFolderStore;
const {
id,
parentId: selectedNodeParentId /* rootFolderType */,
} = selectedFolderStore;
return {
isAdmin: auth.isAdmin,
@ -584,6 +578,7 @@ export default inject(
getSubfolders,
setIsLoadingNodes,
isLoadingNodes,
selectedNodeParentId,
};
}
)(withTranslation(["Home", "Common"])(observer(TreeFolders)));

View File

@ -18,12 +18,13 @@ const FolderTreeBody = ({
isDisableTree,
parentId,
isLoadingNodes,
setIsLoadingNodes,
}) => {
const { t } = useTranslation(["SelectFolder", "Common"]);
useEffect(() => {
const selectedNode = document.getElementsByClassName(
"rc-tree-node-selected"
"rc-tree-treenode-selected"
)[0];
if (selectedNode) {
document
@ -32,6 +33,19 @@ const FolderTreeBody = ({
}
}, []);
const firstLoadScroll = () => {
setIsLoadingNodes(false);
const selectedNode = document.getElementsByClassName(
"rc-tree-treenode-selected"
)[0];
if (selectedNode) {
document
.querySelector("#folder-tree-scroll-bar > .scroll-body")
.scrollTo(0, selectedNode.offsetTop);
}
};
return (
<>
{isAvailable ? (
@ -51,6 +65,7 @@ const FolderTreeBody = ({
needUpdate={false}
defaultExpandAll
parentId={parentId}
firstLoadScroll={firstLoadScroll}
/>
</Scrollbar>
</div>
@ -74,8 +89,11 @@ FolderTreeBody.defaultProps = {
export default inject(
({ filesStore, treeFoldersStore, selectedFolderStore }) => {
const { filter, isLoading } = filesStore;
const { expandedPanelKeys, isLoadingNodes } = treeFoldersStore;
const {
expandedPanelKeys,
isLoadingNodes,
setIsLoadingNodes,
} = treeFoldersStore;
const expandedKeysProp = expandedPanelKeys
? expandedPanelKeys
: selectedFolderStore.pathParts;
@ -87,6 +105,7 @@ export default inject(
filter,
isLoading,
isLoadingNodes,
setIsLoadingNodes,
};
}
)(observer(FolderTreeBody));

View File

@ -10,7 +10,7 @@ const { auth: authStore } = store;
class SelectFileDialogBody extends React.Component {
componentDidMount() {
const { settings, setFilesSettings } = this.props;
settings && setFilesSettings(settings);
settings && setFilesSettings(settings); // Remove after initialization settings in Editor
}
render() {

View File

@ -17,6 +17,7 @@ const SharingDialog = ({
setSelection,
theme,
sharingPanelVisible,
settings,
}) => {
useEffect(() => {
setSharingPanelVisible(isVisible);
@ -35,6 +36,7 @@ const SharingDialog = ({
onSuccess={onSuccess}
onCancel={onCancel}
theme={theme}
settings={settings}
/>
)}
</>

View File

@ -419,6 +419,9 @@ class SharingPanelComponent extends React.Component {
};
componentDidMount() {
const { settings, setFilesSettings } = this.props;
settings && setFilesSettings(settings); // Remove after initialization settings in Editor
this.getShareData();
this._isMounted = true;
@ -827,12 +830,13 @@ const SharingPanel = inject(
dialogsStore,
treeFoldersStore,
selectedFolderStore,
settingsStore,
},
{ uploadPanelVisible }
) => {
const { replaceFileStream, setEncryptionAccess } = auth;
const { personal, customNames, isDesktopClient } = auth.settingsStore;
const { user } = auth.userStore;
const { setFilesSettings } = settingsStore;
const { id, access } = selectedFolderStore;
@ -908,6 +912,7 @@ const SharingPanel = inject(
setBufferSelection,
access,
isShared: isShared,
setFilesSettings,
};
}
)(

View File

@ -58,9 +58,9 @@ const theme = store.auth.settingsStore.theme;
let documentIsReady = false;
const text = "text";
const spreadSheet = "spreadsheet";
const presentation = "presentation";
const text = "word";
const spreadSheet = "cell";
const presentation = "slide";
const insertImageAction = "imageFileType";
const mailMergeAction = "mailMergeFileType";
const compareFilesAction = "documentsFileType";
@ -908,6 +908,7 @@ const Editor = () => {
<div id="editor"></div>
{isSharingAccess && isVisible && (
<SharingDialog
settings={settings} //TODO: Maybe init filesSettings in editor?
isVisible={isVisible}
sharingObject={fileInfo}
onCancel={onCancel}
@ -917,7 +918,7 @@ const Editor = () => {
{isFileDialogVisible && (
<SelectFileDialog
settings={settings}
settings={settings} //TODO: Maybe init filesSettings in editor?
resetTreeFolders
onSelectFile={onSelectFile}
isPanelVisible={isFileDialogVisible}