Also updates integeration test.
Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima <lucas@di-pentima.com.ar>
});
cy.get('[data-cy=collection-panel-options-btn]').click()
cy.get('[data-cy=context-menu]').contains('Recover version').click();
+ cy.get('[data-cy=confirmation-dialog]').should('contain', 'Recover version');
+ cy.get('[data-cy=confirmation-dialog-ok-btn]').click();
cy.get('[data-cy=collection-info-panel]')
.should('not.contain', 'This is an old version');
cy.get('[data-cy=collection-version-number]').should('contain', '4');
import { snackbarActions, SnackbarKind } from "../snackbar/snackbar-actions";
import { resourcesActions } from "../resources/resources-actions";
import { navigateTo } from "../navigation/navigation-action";
+import { dialogActions } from "../dialog/dialog-actions";
+
+export const COLLECTION_RECOVER_VERSION_DIALOG = 'collectionRecoverVersionDialog';
+
+export const openRecoverCollectionVersionDialog = (uuid: string) =>
+ (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
+ dispatch(dialogActions.OPEN_DIALOG({
+ id: COLLECTION_RECOVER_VERSION_DIALOG,
+ data: {
+ title: 'Recover version',
+ text: "Do you want to copy this as the new collection's head version? If you don't want to modify the current head version, you can just make a copy.",
+ confirmButtonLabel: 'Recover',
+ uuid
+ }
+ }));
+ };
export const recoverVersion = (resourceUuid: string) =>
async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
--- /dev/null
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
+import { Dispatch, compose } from 'redux';
+import { connect } from "react-redux";
+import { ConfirmationDialog } from "~/components/confirmation-dialog/confirmation-dialog";
+import { withDialog, WithDialogProps } from "~/store/dialog/with-dialog";
+import { COLLECTION_RECOVER_VERSION_DIALOG, recoverVersion } from '~/store/collections/collection-version-actions';
+
+const mapDispatchToProps = (dispatch: Dispatch, props: WithDialogProps<any>) => ({
+ onConfirm: () => {
+ props.closeDialog();
+ dispatch<any>(recoverVersion(props.data.uuid));
+ }
+});
+
+export const RecoverCollectionVersionDialog = compose(
+ withDialog(COLLECTION_RECOVER_VERSION_DIALOG),
+ connect(null, mapDispatchToProps)
+)(ConfirmationDialog);
\ No newline at end of file
import { openAdvancedTabDialog } from "~/store/advanced-tab/advanced-tab";
import { toggleDetailsPanel } from '~/store/details-panel/details-panel-action';
import { copyToClipboardAction, openInNewTabAction } from "~/store/open-in-new-tab/open-in-new-tab.actions";
-import { recoverVersion } from "~/store/collections/collection-version-actions";
+import { openRecoverCollectionVersionDialog } from "~/store/collections/collection-version-actions";
import { TogglePublicFavoriteAction } from "../actions/public-favorite-action";
import { togglePublicFavorite } from "~/store/public-favorites/public-favorites-actions";
import { publicFavoritePanelActions } from "~/store/public-favorites-panel/public-favorites-action";
icon: RecoverVersionIcon,
name: 'Recover version',
execute: (dispatch, { uuid }) => {
- dispatch<any>(recoverVersion(uuid));
+ dispatch<any>(openRecoverCollectionVersionDialog(uuid));
}
},
]
import { AllProcessesPanel } from '../all-processes-panel/all-processes-panel';
import { NotFoundPanel } from '../not-found-panel/not-found-panel';
import { AutoLogout } from '~/views-components/auto-logout/auto-logout';
+import { RecoverCollectionVersionDialog } from '~/views-components/collections-dialog/recover-version-dialog';
type CssRules = 'root' | 'container' | 'splitter' | 'asidePanel' | 'contentWrapper' | 'content';
<ProcessCommandDialog />
<ProcessInputDialog />
<ProjectPropertiesDialog />
+ <RecoverCollectionVersionDialog />
<RemoveApiClientAuthorizationDialog />
<RemoveComputeNodeDialog />
<RemoveGroupDialog />