//
// SPDX-License-Identifier: AGPL-3.0
-import { ContextMenuAction, ContextMenuActionSet } from "../context-menu-action-set";
+import { ContextMenuActionItem, ContextMenuActionItemSet } from "../context-menu-action-set";
import { ToggleFavoriteAction } from "../actions/favorite-action";
import { toggleFavorite } from "store/favorites/favorites-actions";
import {
import { openCollectionUpdateDialog } from "store/collections/collection-update-actions";
import { favoritePanelActions } from "store/favorite-panel/favorite-panel-action";
import { openMoveCollectionDialog } from "store/collections/collection-move-actions";
-import { openCollectionCopyDialog } from "store/collections/collection-copy-actions";
+import { openCollectionCopyDialog, openMultiCollectionCopyDialog } from "store/collections/collection-copy-actions";
import { openWebDavS3InfoDialog } from "store/collections/collection-info-actions";
import { ToggleTrashAction } from "views-components/context-menu/actions/trash-action";
import { toggleCollectionTrashed } from "store/trash/trash-actions";
import { publicFavoritePanelActions } from "store/public-favorites-panel/public-favorites-action";
import { ContextMenuResource } from "store/context-menu/context-menu-actions";
-const toggleFavoriteAction: ContextMenuAction = {
+const toggleFavoriteAction: ContextMenuActionItem = {
component: ToggleFavoriteAction,
name: "ToggleFavoriteAction",
execute: (dispatch, resources) => {
- resources.forEach(resource =>
+ for (const resource of [...resources]) {
dispatch<any>(toggleFavorite(resource)).then(() => {
dispatch<any>(favoritePanelActions.REQUEST_ITEMS());
- })
- );
+ });
+ }
},
};
-
-const commonActionSet: ContextMenuActionSet = [
+const commonActionSet: ContextMenuActionItemSet = [
[
{
icon: OpenIcon,
icon: CopyIcon,
name: "Make a copy",
execute: (dispatch, resources) => {
- dispatch<any>(openCollectionCopyDialog(resources[0]));
+ if (resources[0].fromContextMenu || resources.length === 1) dispatch<any>(openCollectionCopyDialog(resources[0]));
+ else dispatch<any>(openMultiCollectionCopyDialog(resources[0]));
},
},
{
icon: AdvancedIcon,
name: "API Details",
execute: (dispatch, resources) => {
- resources.forEach(resource => dispatch<any>(openAdvancedTabDialog(resource.uuid)));
+ dispatch<any>(openAdvancedTabDialog(resources[0].uuid));
},
},
],
];
-export const readOnlyCollectionActionSet: ContextMenuActionSet = [
+export const readOnlyCollectionActionSet: ContextMenuActionItemSet = [
[
...commonActionSet.reduce((prev, next) => prev.concat(next), []),
toggleFavoriteAction,
icon: FolderSharedIcon,
name: "Open with 3rd party client",
execute: (dispatch, resources) => {
- resources.forEach(resource => dispatch<any>(openWebDavS3InfoDialog(resource.uuid)));
+ dispatch<any>(openWebDavS3InfoDialog(resources[0].uuid));
},
},
],
];
-export const collectionActionSet: ContextMenuActionSet = [
+export const collectionActionSet: ContextMenuActionItemSet = [
[
...readOnlyCollectionActionSet.reduce((prev, next) => prev.concat(next), []),
{
icon: RenameIcon,
name: "Edit collection",
execute: (dispatch, resources) => {
- resources.forEach(resource => dispatch<any>(openCollectionUpdateDialog(resource)));
+ dispatch<any>(openCollectionUpdateDialog(resources[0]));
},
},
{
icon: ShareIcon,
name: "Share",
execute: (dispatch, resources) => {
- resources.forEach(({ uuid }) => dispatch<any>(openSharingDialog(uuid)));
+ dispatch<any>(openSharingDialog(resources[0].uuid));
},
},
{
component: ToggleTrashAction,
name: "ToggleTrashAction",
execute: (dispatch, resources: ContextMenuResource[]) => {
- resources.forEach(resource => dispatch<any>(toggleCollectionTrashed(resource.uuid, resource.isTrashed!!)));
+ for (const resource of [...resources]) {
+ dispatch<any>(toggleCollectionTrashed(resource.uuid, resource.isTrashed!!));
+ }
},
},
],
];
-export const collectionAdminActionSet: ContextMenuActionSet = [
+export const collectionAdminActionSet: ContextMenuActionItemSet = [
[
...collectionActionSet.reduce((prev, next) => prev.concat(next), []),
{
component: TogglePublicFavoriteAction,
name: "TogglePublicFavoriteAction",
execute: (dispatch, resources) => {
- resources.forEach(resource =>
+ for (const resource of [...resources]) {
dispatch<any>(togglePublicFavorite(resource)).then(() => {
dispatch<any>(publicFavoritePanelActions.REQUEST_ITEMS());
- })
- );
+ });
+ }
},
},
],
];
-export const oldCollectionVersionActionSet: ContextMenuActionSet = [
+export const oldCollectionVersionActionSet: ContextMenuActionItemSet = [
[
...commonActionSet.reduce((prev, next) => prev.concat(next), []),
{
icon: RestoreVersionIcon,
name: "Restore version",
execute: (dispatch, resources) => {
- resources.forEach(({ uuid }) => dispatch<any>(openRestoreCollectionVersionDialog(uuid)));
+ for (const resource of [...resources]) {
+ dispatch<any>(openRestoreCollectionVersionDialog(resource.uuid));
+ }
},
},
],