Fix Bug: Inaccessible items should not be displayed in the checkbox of the menu.

This commit is contained in:
Tatiana Lopaeva 2021-09-16 10:11:44 +03:00
parent cfaa39a8c7
commit a1a819a3fa
2 changed files with 121 additions and 92 deletions

View File

@ -49,9 +49,11 @@ class GroupButtonsMenu extends React.Component {
};
componentDidMount() {
const groupMenuElement = document.getElementById("groupMenu");
this.groupMenuElement = document.getElementById("groupMenu");
const groupMenuItems = groupMenuElement ? groupMenuElement.children : [0];
const groupMenuItems = this.groupMenuElement
? this.groupMenuElement.children
: [0];
const groupMenuItemsArray = [...groupMenuItems];
this.widthsArray = groupMenuItemsArray.map((item) => item.offsetWidth);
@ -73,6 +75,19 @@ class GroupButtonsMenu extends React.Component {
this.state.moreItems.length !== prevState.moreItems.length ||
this.props.menuItems !== prevProps.menuItems
) {
if (
this.state.priorityItems.length !== prevState.priorityItems.length &&
this.props.sectionWidth === prevProps.sectionWidth &&
this.state.moreItems.length === prevState.moreItems.length &&
this.state.moreItems.length === 0
) {
const groupMenuItems = this.groupMenuElement
? this.groupMenuElement.children
: [0];
const groupMenuItemsArray = [...groupMenuItems];
this.widthsArray = groupMenuItemsArray.map((item) => item.offsetWidth);
}
this.updateMenu();
}
}

View File

@ -693,43 +693,93 @@ class FilesActionStore {
setEmptyTrashDialogVisible,
} = this.dialogsStore;
const headerMenu = [
{
label: t("Share"),
disabled: isFavoritesFolder || isRecentFolder || !isAccessedSelected,
onClick: () => setSharingPanelVisible(true),
},
{
label: t("Common:Download"),
disabled: !hasSelection,
onClick: () =>
this.downloadAction(t("Translations:ArchivingData")).catch((err) =>
toastr.error(err)
),
},
{
label: t("Translations:DownloadAs"),
disabled: !hasSelection || !isWebEditSelected,
onClick: () => setDownloadDialogVisible(true),
},
{
label: t("MoveTo"),
disabled:
const removeDownloadAs = !hasSelection || !isWebEditSelected;
const removeShare =
isFavoritesFolder || isRecentFolder || !isAccessedSelected;
const removeDownload = !hasSelection;
const removeMoveTo =
isFavoritesFolder ||
isRecentFolder ||
!isAccessedSelected ||
!hasSelection ||
isThirdPartyRootSelection,
isThirdPartyRootSelection;
const removeCopy = !hasSelection;
const removeDelete = !hasSelection || isThirdPartyRootSelection;
let itemsObj = new Map();
if (!removeShare) {
(!isPrivacyFolder || !this.authStore.settingsStore.personal) &&
itemsObj.set("share", {
label: t("Share"),
onClick: () => setSharingPanelVisible(true),
});
}
if (!removeDownload) {
!isPrivacyFolder &&
itemsObj.set("download", {
label: t("Common:Download"),
onClick: () =>
this.downloadAction(t("Translations:ArchivingData")).catch((err) =>
toastr.error(err)
),
});
}
if (!removeDownloadAs) {
!isPrivacyFolder &&
itemsObj.set("downloadAs", {
label: t("Translations:DownloadAs"),
onClick: () => setDownloadDialogVisible(true),
});
}
if (!removeMoveTo) {
!isRecycleBinFolder &&
!isShareFolder &&
!isRecentFolder &&
!isFavoritesFolder &&
itemsObj.set("moveTo", {
label: t("MoveTo"),
onClick: () => setMoveToPanelVisible(true),
},
{
});
}
if (!removeCopy) {
!isRecycleBinFolder &&
itemsObj.set("copy", {
label: t("Translations:Copy"),
disabled: !hasSelection,
onClick: () => setCopyPanelVisible(true),
},
{
});
}
if (isRecycleBinFolder) {
itemsObj.set("restore", {
label: t("Translations:Restore"),
onClick: () => setMoveToPanelVisible(true),
});
}
if (!removeDelete) {
if (isFavoritesFolder) {
itemsObj.set("delete", {
label: t("Common:Delete"),
alt: t("RemoveFromFavorites"),
onClick: () => {
const items = selection.map((item) => item.id);
this.setFavoriteAction("remove", items)
.then(() => toastr.success(t("RemovedFromFavorites")))
.catch((err) => toastr.error(err));
},
});
} else {
!isRecentFolder &&
itemsObj.set("delete", {
label: t("Common:Delete"),
disabled: !hasSelection || isThirdPartyRootSelection,
onClick: () => {
if (this.settingsStore.confirmDelete) {
setDeleteDialogVisible(true);
@ -740,60 +790,24 @@ class FilesActionStore {
deleteSelectedElem: t("Translations:DeleteSelectedElem"),
};
this.deleteAction(translations).catch((err) => toastr.error(err));
this.deleteAction(translations).catch((err) =>
toastr.error(err)
);
}
},
},
];
});
}
}
if (isRecycleBinFolder) {
headerMenu.push({
itemsObj.set("emptyRecycleBin", {
label: t("EmptyRecycleBin"),
onClick: () => setEmptyTrashDialogVisible(true),
});
headerMenu.splice(3, 2, {
label: t("Translations:Restore"),
onClick: () => setMoveToPanelVisible(true),
});
}
if (isFavoritesFolder) {
headerMenu.splice(5, 1);
headerMenu.push({
label: t("Common:Delete"),
alt: t("RemoveFromFavorites"),
onClick: () => {
const items = selection.map((item) => item.id);
this.setFavoriteAction("remove", items)
.then(() => toastr.success(t("RemovedFromFavorites")))
.catch((err) => toastr.error(err));
},
});
}
if (isPrivacyFolder) {
headerMenu.splice(0, 1);
headerMenu.splice(1, 1);
headerMenu.splice(2, 1);
}
if (isShareFolder) {
headerMenu.splice(3, 1);
}
if (isRecentFolder) {
headerMenu.splice(5, 1);
}
if (isRecentFolder || isFavoritesFolder) {
//headerMenu.splice(0, 1); TODO: need for develop
headerMenu.splice(3, 1);
}
if (this.authStore.settingsStore.personal) {
headerMenu.splice(0, 1);
}
const headerMenu = Array.from(itemsObj.values());
itemsObj.clear();
return headerMenu;
};