Fix Bug 52035 - Fixed actions in the header for third-party files, fixed context-menu for third-party files

This commit is contained in:
Nikita Gopienko 2021-08-20 14:20:56 +03:00
parent c295f1a77c
commit 1d0fbcc13b
5 changed files with 58 additions and 27 deletions

View File

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

View File

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

View File

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

View File

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

View File

@ -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() {