Fix actions on a del marker in object list view (#3134)

This commit is contained in:
Prakash Senthil Vel
2023-11-24 10:02:08 +05:30
committed by GitHub
parent e4d5f9610e
commit 924c38faa6
3 changed files with 27 additions and 6 deletions

View File

@@ -1,2 +1,3 @@
build
coverage
.nyc_output

View File

@@ -20,6 +20,6 @@ find-deadcode:
./check-deadcode.sh
prettify:
yarn prettier --write . --loglevel warn
yarn prettier --write . --log-level warn
pretty: prettify

View File

@@ -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: <DownloadIcon />,
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: <ShareIcon />,
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: <PreviewIcon />,
tooltip: canPreviewFile ? "Preview Selected File" : "Preview unavailable",
},