From 1d0fbcc13ba062a91b5719a559c41b59829e73e8 Mon Sep 17 00:00:00 2001 From: gopienkonikita Date: Fri, 20 Aug 2021 14:20:56 +0300 Subject: [PATCH] Fix Bug 52035 - Fixed actions in the header for third-party files, fixed context-menu for third-party files --- .../Client/src/HOCs/withContextOptions.js | 34 +++++++++++++------ .../src/pages/Home/MediaViewer/index.js | 8 ++++- .../src/pages/Home/Section/Header/index.js | 17 ++++++---- .../Client/src/store/FilesActionsStore.js | 11 ++++-- .../ASC.Files/Client/src/store/FilesStore.js | 15 ++++---- 5 files changed, 58 insertions(+), 27 deletions(-) diff --git a/products/ASC.Files/Client/src/HOCs/withContextOptions.js b/products/ASC.Files/Client/src/HOCs/withContextOptions.js index 6ba70ed116..61d497e73d 100644 --- a/products/ASC.Files/Client/src/HOCs/withContextOptions.js +++ b/products/ASC.Files/Client/src/HOCs/withContextOptions.js @@ -193,11 +193,19 @@ export default function withContextOptions(WrappedComponent) { setDeleteThirdPartyDialogVisible, t, deleteItemAction, - isThirdPartyFolder, } = this.props; - const { id, title, fileExst, contentLength, folderId } = item; + const { + id, + title, + fileExst, + contentLength, + folderId, + providerKey, + rootFolderId, + } = item; + const isRootThirdPartyFolder = providerKey && id === rootFolderId; - if (isThirdPartyFolder) { + if (isRootThirdPartyFolder) { const splitItem = id.split("-"); setRemoveItem({ id: splitItem[splitItem.length - 1], title }); setDeleteThirdPartyDialogVisible(true); @@ -210,7 +218,13 @@ export default function withContextOptions(WrappedComponent) { successRemoveFolder: t("FolderRemoved"), }; - deleteItemAction(id, folderId, translations, fileExst || contentLength); + deleteItemAction( + id, + folderId, + translations, + fileExst || contentLength, + providerKey + ); }; onClickShare = () => { @@ -234,8 +248,10 @@ export default function withContextOptions(WrappedComponent) { }; getFilesContextOptions = () => { - const { item, t, isThirdPartyFolder } = this.props; + const { item, t } = this.props; const { contextOptions } = item; + const isRootThirdPartyFolder = + item.providerKey && item.id === item.rootFolderId; const isShareable = item.canShare; @@ -418,7 +434,7 @@ export default function withContextOptions(WrappedComponent) { case "delete": return { key: option, - label: isThirdPartyFolder + label: isRootThirdPartyFolder ? t("Translations:DeleteThirdParty") : t("Common:Delete"), icon: "/static/images/catalog.trash.react.svg", @@ -489,7 +505,6 @@ export default function withContextOptions(WrappedComponent) { auth, versionHistoryStore, mediaViewerDataStore, - selectedFolderStore, dialogsStore, treeFoldersStore, }, @@ -524,10 +539,8 @@ export default function withContextOptions(WrappedComponent) { const { setIsVerHistoryPanel, fetchFileVersions } = versionHistoryStore; const { setAction, type, extension, id } = fileActionStore; const { setMediaViewerData } = mediaViewerDataStore; - const { isRootFolder } = selectedFolderStore; - const { isRecycleBinFolder, isShare } = treeFoldersStore; - const isThirdPartyFolder = item.providerKey && isRootFolder; + const { isRecycleBinFolder, isShare } = treeFoldersStore; const isShareFolder = isShare(item.rootFolderType); return { @@ -552,7 +565,6 @@ export default function withContextOptions(WrappedComponent) { setRemoveItem, setDeleteThirdPartyDialogVisible, deleteItemAction, - isThirdPartyFolder, onSelectItem, setSharingPanelVisible, actionType: type, diff --git a/products/ASC.Files/Client/src/pages/Home/MediaViewer/index.js b/products/ASC.Files/Client/src/pages/Home/MediaViewer/index.js index 3ab9dd3702..d49424f101 100644 --- a/products/ASC.Files/Client/src/pages/Home/MediaViewer/index.js +++ b/products/ASC.Files/Client/src/pages/Home/MediaViewer/index.js @@ -66,7 +66,13 @@ const FilesMediaViewer = (props) => { let file = files.find((file) => file.id === id); if (file) { setRemoveMediaItem(file); - deleteItemAction(file.id, selectedFolderId, translations, true); + deleteItemAction( + file.id, + selectedFolderId, + translations, + true, + file.providerKey + ); } } }; diff --git a/products/ASC.Files/Client/src/pages/Home/Section/Header/index.js b/products/ASC.Files/Client/src/pages/Home/Section/Header/index.js index cc94d27243..9078ea2648 100644 --- a/products/ASC.Files/Client/src/pages/Home/Section/Header/index.js +++ b/products/ASC.Files/Client/src/pages/Home/Section/Header/index.js @@ -226,9 +226,10 @@ class SectionHeaderContent extends React.Component { deleteAction, confirmDelete, setDeleteDialogVisible, + isThirdPartySelection, } = this.props; - if (confirmDelete) { + if (confirmDelete || isThirdPartySelection) { setDeleteDialogVisible(true); } else { const translations = { @@ -325,16 +326,16 @@ class SectionHeaderContent extends React.Component { selectionCount, isAccessedSelected, isWebEditSelected, - isViewedSelected, - isMediaSelected, + // isViewedSelected, + // isMediaSelected, deleteDialogVisible, isRecycleBin, - isThirdPartySelection, + isThirdPartyRootSelection, isPrivacy, isFavoritesFolder, isRecentFolder, isShareFolder, - personal, + // personal, } = this.props; let menu = [ @@ -415,7 +416,7 @@ class SectionHeaderContent extends React.Component { isRecentFolder || !isAccessedSelected || !selectionCount || - isThirdPartySelection, + isThirdPartyRootSelection, onClick: this.onMoveAction, }, { @@ -426,7 +427,7 @@ class SectionHeaderContent extends React.Component { { label: t("Common:Delete"), disabled: - !selectionCount || !deleteDialogVisible || isThirdPartySelection, + !selectionCount || !deleteDialogVisible || isThirdPartyRootSelection, onClick: this.onDeleteAction, }, ]; @@ -626,6 +627,7 @@ export default inject( isHeaderChecked, userAccess, isAccessedSelected, + isThirdPartyRootSelection, isThirdPartySelection, isWebEditSelected, setIsLoading, @@ -674,6 +676,7 @@ export default inject( isHeaderChecked, deleteDialogVisible: userAccess, isAccessedSelected, + isThirdPartyRootSelection, isThirdPartySelection, isWebEditSelected, isViewedSelected, diff --git a/products/ASC.Files/Client/src/store/FilesActionsStore.js b/products/ASC.Files/Client/src/store/FilesActionsStore.js index 12387bf56b..00919a4717 100644 --- a/products/ASC.Files/Client/src/store/FilesActionsStore.js +++ b/products/ASC.Files/Client/src/store/FilesActionsStore.js @@ -319,13 +319,20 @@ class FilesActionStore { setSelection([item]); }; - deleteItemAction = (itemId, currentFolderId, translations, isFile) => { + deleteItemAction = ( + itemId, + currentFolderId, + translations, + isFile, + isThirdParty + ) => { const { setSecondaryProgressBarData, } = this.uploadDataStore.secondaryProgressDataStore; if ( this.settingsStore.confirmDelete || - this.treeFoldersStore.isPrivacyFolder + this.treeFoldersStore.isPrivacyFolder || + isThirdParty ) { this.dialogsStore.setDeleteDialogVisible(true); } else { diff --git a/products/ASC.Files/Client/src/store/FilesStore.js b/products/ASC.Files/Client/src/store/FilesStore.js index 3dd0117259..82e46ba086 100644 --- a/products/ASC.Files/Client/src/store/FilesStore.js +++ b/products/ASC.Files/Client/src/store/FilesStore.js @@ -410,10 +410,8 @@ class FilesStore { const { canWebEdit, canViewedDocs } = this.formatsStore.docserviceStore; - const { isRootFolder } = this.selectedFolderStore; - - const isThirdPartyFolder = item.providerKey && isRootFolder; - + const isThirdPartyFolder = + item.providerKey && item.id === item.rootFolderId; const isShareItem = isShare(item.rootFolderType); const isCommonFolder = isCommon(item.rootFolderType); @@ -1221,9 +1219,14 @@ class FilesStore { ); } + get isThirdPartyRootSelection() { + const withProvider = this.selection.find((x) => x.providerKey); + return withProvider && withProvider.rootFolderId === withProvider.id; + } + get isThirdPartySelection() { - const withProvider = this.selection.find((x) => !x.providerKey); - return !withProvider && this.selectedFolderStore.isRootFolder; + const withProvider = this.selection.find((x) => x.providerKey); + return !!withProvider; } get isWebEditSelected() {