1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import { ContextMenuAction, ContextMenuActionSet } from '../context-menu-action-set';
6 import { ToggleFavoriteAction } from '../actions/favorite-action';
7 import { toggleFavorite } from 'store/favorites/favorites-actions';
19 } from 'components/icon/icon';
20 import { openCollectionUpdateDialog } from 'store/collections/collection-update-actions';
21 import { favoritePanelActions } from 'store/favorite-panel/favorite-panel-action';
22 import { openMoveCollectionDialog } from 'store/collections/collection-move-actions';
23 import { openCollectionCopyDialog } from 'store/collections/collection-copy-actions';
24 import { openWebDavS3InfoDialog } from 'store/collections/collection-info-actions';
25 import { ToggleTrashAction } from 'views-components/context-menu/actions/trash-action';
26 import { toggleCollectionTrashed } from 'store/trash/trash-actions';
27 import { openSharingDialog } from 'store/sharing-dialog/sharing-dialog-actions';
28 import { openAdvancedTabDialog } from 'store/advanced-tab/advanced-tab';
29 import { toggleDetailsPanel } from 'store/details-panel/details-panel-action';
30 import { copyToClipboardAction, openInNewTabAction } from 'store/open-in-new-tab/open-in-new-tab.actions';
31 import { openRestoreCollectionVersionDialog } from 'store/collections/collection-version-actions';
32 import { TogglePublicFavoriteAction } from '../actions/public-favorite-action';
33 import { togglePublicFavorite } from 'store/public-favorites/public-favorites-actions';
34 import { publicFavoritePanelActions } from 'store/public-favorites-panel/public-favorites-action';
36 const toggleFavoriteAction: ContextMenuAction = {
37 component: ToggleFavoriteAction,
38 name: 'ToggleFavoriteAction',
39 execute: (dispatch, resource) => {
40 dispatch<any>(toggleFavorite(resource)).then(() => {
41 dispatch<any>(favoritePanelActions.REQUEST_ITEMS());
46 const commonActionSet: ContextMenuActionSet = [
50 name: 'Open in new tab',
51 execute: (dispatch, resource) => {
52 dispatch<any>(openInNewTabAction(resource));
57 name: 'Copy to clipboard',
58 execute: (dispatch, resource) => {
59 dispatch<any>(copyToClipboardAction(resource));
65 execute: (dispatch, resource) => {
66 dispatch<any>(openCollectionCopyDialog(resource));
72 execute: (dispatch) => {
73 dispatch<any>(toggleDetailsPanel());
79 execute: (dispatch, resource) => {
80 dispatch<any>(openAdvancedTabDialog(resource.uuid));
86 export const readOnlyCollectionActionSet: ContextMenuActionSet = [
88 ...commonActionSet.reduce((prev, next) => prev.concat(next), []),
91 icon: FolderSharedIcon,
92 name: 'Open with 3rd party client',
93 execute: (dispatch, resource) => {
94 dispatch<any>(openWebDavS3InfoDialog(resource.uuid));
100 export const collectionActionSet: ContextMenuActionSet = [
102 ...readOnlyCollectionActionSet.reduce((prev, next) => prev.concat(next), []),
105 name: 'Edit collection',
106 execute: (dispatch, resource) => {
107 dispatch<any>(openCollectionUpdateDialog(resource));
113 execute: (dispatch, { uuid }) => {
114 dispatch<any>(openSharingDialog(uuid));
120 execute: (dispatch, resource) => dispatch<any>(openMoveCollectionDialog(resource)),
123 component: ToggleTrashAction,
124 name: 'ToggleTrashAction',
125 execute: (dispatch, resource) => {
126 dispatch<any>(toggleCollectionTrashed(resource.uuid, resource.isTrashed!!));
132 export const collectionAdminActionSet: ContextMenuActionSet = [
134 ...collectionActionSet.reduce((prev, next) => prev.concat(next), []),
136 component: TogglePublicFavoriteAction,
137 name: 'TogglePublicFavoriteAction',
138 execute: (dispatch, resource) => {
139 dispatch<any>(togglePublicFavorite(resource)).then(() => {
140 dispatch<any>(publicFavoritePanelActions.REQUEST_ITEMS());
147 export const oldCollectionVersionActionSet: ContextMenuActionSet = [
149 ...commonActionSet.reduce((prev, next) => prev.concat(next), []),
151 icon: RestoreVersionIcon,
152 name: 'Restore version',
153 execute: (dispatch, { uuid }) => {
154 dispatch<any>(openRestoreCollectionVersionDialog(uuid));