From 924c38faa68d9577a83f74fb4ed8e81bbf5abc46 Mon Sep 17 00:00:00 2001
From: Prakash Senthil Vel <23444145+prakashsvmx@users.noreply.github.com>
Date: Fri, 24 Nov 2023 10:02:08 +0530
Subject: [PATCH] Fix actions on a del marker in object list view (#3134)
---
portal-ui/.prettierignore | 1 +
portal-ui/Makefile | 2 +-
.../Objects/ListObjects/ListObjects.tsx | 30 +++++++++++++++----
3 files changed, 27 insertions(+), 6 deletions(-)
diff --git a/portal-ui/.prettierignore b/portal-ui/.prettierignore
index 97edd36c2..87a389b85 100644
--- a/portal-ui/.prettierignore
+++ b/portal-ui/.prettierignore
@@ -1,2 +1,3 @@
build
coverage
+.nyc_output
\ No newline at end of file
diff --git a/portal-ui/Makefile b/portal-ui/Makefile
index b7f818677..34c051c3b 100644
--- a/portal-ui/Makefile
+++ b/portal-ui/Makefile
@@ -20,6 +20,6 @@ find-deadcode:
./check-deadcode.sh
prettify:
- yarn prettier --write . --loglevel warn
+ yarn prettier --write . --log-level warn
pretty: prettify
diff --git a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx
index 006af7497..ac9da39a3 100644
--- a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx
+++ b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx
@@ -215,6 +215,10 @@ const ListObjects = () => {
(state: AppState) => state.objectBrowser.anonymousAccessOpen,
);
+ const records = useSelector(
+ (state: AppState) => state.objectBrowser?.records || [],
+ );
+
const loadingBucket = useSelector(selBucketDetailsLoading);
const bucketInfo = useSelector(selBucketDetailsInfo);
@@ -291,6 +295,20 @@ const ListObjects = () => {
(state: AppState) => state.objectBrowser.selectedObjects,
);
+ const checkForDelMarker = (): boolean => {
+ let isObjDelMarker = false;
+ if (selectedObjects.length === 1) {
+ let matchingRec = records.find((obj) => {
+ return obj.name === `${selectedObjects[0]}` && obj.delete_flag;
+ });
+
+ isObjDelMarker = !!matchingRec;
+ }
+ return isObjDelMarker;
+ };
+
+ const isSelObjectDelMarker = checkForDelMarker();
+
const fetchMetadata = useCallback(() => {
const objectName = selectedObjects[0];
@@ -317,10 +335,10 @@ const ListObjects = () => {
}, [bucketName, selectedObjects, isMetaDataLoaded]);
useEffect(() => {
- if (bucketName && selectedObjects.length === 1) {
+ if (bucketName && !isSelObjectDelMarker) {
fetchMetadata();
}
- }, [bucketName, selectedObjects, fetchMetadata]);
+ }, [bucketName, selectedObjects, fetchMetadata, isSelObjectDelMarker]);
useEffect(() => {
if (rewindEnabled) {
@@ -834,7 +852,7 @@ const ListObjects = () => {
dispatch(downloadSelected(bucketName));
},
label: "Download",
- disabled: !canDownload || selectedObjects?.length === 0,
+ disabled: !canDownload || isSelObjectDelMarker,
icon: ,
tooltip: canDownload
? downloadToolTip
@@ -848,7 +866,8 @@ const ListObjects = () => {
dispatch(openShare());
},
label: "Share",
- disabled: selectedObjects.length !== 1 || !canShareFile,
+ disabled:
+ selectedObjects.length !== 1 || !canShareFile || isSelObjectDelMarker,
icon: ,
tooltip: canShareFile ? "Share Selected File" : "Sharing unavailable",
},
@@ -857,7 +876,8 @@ const ListObjects = () => {
dispatch(openPreview());
},
label: "Preview",
- disabled: selectedObjects.length !== 1 || !canPreviewFile,
+ disabled:
+ selectedObjects.length !== 1 || !canPreviewFile || isSelObjectDelMarker,
icon: ,
tooltip: canPreviewFile ? "Preview Selected File" : "Preview unavailable",
},