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", },