From 6d40ff7e1b3215d2e96124f4e2e643fa5d78504c Mon Sep 17 00:00:00 2001 From: Alex <33497058+bexsoft@users.noreply.github.com> Date: Thu, 17 Mar 2022 19:21:21 -0700 Subject: [PATCH] Enabled Delete selected version functionality (#1731) Signed-off-by: Benjamin Perez --- .../Objects/ListObjects/DeleteObject.tsx | 29 ++++++-- .../Objects/ListObjects/ObjectDetailPanel.tsx | 67 +++++++++++-------- 2 files changed, 63 insertions(+), 33 deletions(-) diff --git a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteObject.tsx b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteObject.tsx index 60ff63943..7eba0483d 100644 --- a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteObject.tsx +++ b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteObject.tsx @@ -14,7 +14,7 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -import React, { useState } from "react"; +import React, { useState, Fragment } from "react"; import { connect } from "react-redux"; import { DialogContentText } from "@mui/material"; import { setErrorSnackMessage } from "../../../../../../actions"; @@ -32,6 +32,7 @@ interface IDeleteObjectProps { selectedBucket: string; setErrorSnackMessage: typeof setErrorSnackMessage; versioning: boolean; + selectedVersion?: string; } const DeleteObject = ({ @@ -41,6 +42,7 @@ const DeleteObject = ({ selectedObject, setErrorSnackMessage, versioning, + selectedVersion = "", }: IDeleteObjectProps) => { const onDelSuccess = () => closeDeleteModalAndRefresh(true); const onDelError = (err: ErrorResponseHandler) => setErrorSnackMessage(err); @@ -57,7 +59,11 @@ const DeleteObject = ({ const recursive = decodedSelectedObject.endsWith("/"); invokeDeleteApi( "DELETE", - `/api/v1/buckets/${selectedBucket}/objects?path=${selectedObject}&recursive=${recursive}&all_versions=${deleteVersions}` + `/api/v1/buckets/${selectedBucket}/objects?path=${selectedObject}${ + selectedVersion !== "" + ? `&version_id=${selectedVersion}` + : `&recursive=${recursive}&all_versions=${deleteVersions}` + }` ); }; @@ -72,9 +78,22 @@ const DeleteObject = ({ onClose={onClose} confirmationContent={ - Are you sure you want to delete:{" "} - {decodeFileName(selectedObject)}?
- {versioning && ( + Are you sure you want to delete:
+ {decodeFileName(selectedObject)}{" "} + {selectedVersion !== "" ? ( + +
+
+ Version ID: +
+ {selectedVersion} +
+ ) : ( + "" + )} + ?
+
+ {versioning && selectedVersion === "" && ( { const [shareFileModalOpen, setShareFileModalOpen] = useState(false); const [retentionModalOpen, setRetentionModalOpen] = useState(false); @@ -313,8 +319,12 @@ const ObjectDetailPanel = ({ const closeDeleteModal = (closeAndReload: boolean) => { setDeleteOpen(false); - if (closeAndReload) { + if (closeAndReload && selectedVersion === "") { onClosePanel(true); + } else { + setLoadingVersions(true); + setSelectedVersion(""); + setLoadingObjectInfo(true); } }; @@ -466,6 +476,7 @@ const ObjectDetailPanel = ({ selectedObject={internalPaths} closeDeleteModalAndRefresh={closeDeleteModal} versioning={distributedSetup && versioning} + selectedVersion={selectedVersion} /> )} {legalholdOpen && actualInfo && ( @@ -527,34 +538,32 @@ const ObjectDetailPanel = ({ /> - {selectedVersion === "" && ( - + - - )} + Delete{selectedVersion !== "" ? " version" : ""} + + Object Info @@ -687,6 +696,8 @@ const mapDispatchToProps = { completeObject, setVersionsModeEnabled, setLoadingObjectInfo, + setLoadingVersions, + setSelectedVersion, }; const connector = connect(mapStateToProps, mapDispatchToProps);