disable legalhold if no locking (#1758)
This commit is contained in:
@@ -74,7 +74,7 @@ import {
|
||||
setErrorSnackMessage,
|
||||
setSnackBarMessage,
|
||||
} from "../../../../../../actions";
|
||||
import { BucketInfo, BucketQuota, BucketVersioning } from "../../../types";
|
||||
import {BucketInfo, BucketObjectLocking, BucketQuota, BucketVersioning} from "../../../types";
|
||||
import { ErrorResponseHandler } from "../../../../../../common/types";
|
||||
|
||||
import ScreenTitle from "../../../../Common/ScreenTitle/ScreenTitle";
|
||||
@@ -290,6 +290,8 @@ const ListObjects = ({
|
||||
useState<React.ReactNode>(defLoading);
|
||||
const [loadingVersioning, setLoadingVersioning] = useState<boolean>(true);
|
||||
const [isVersioned, setIsVersioned] = useState<boolean>(false);
|
||||
const [loadingLocking, setLoadingLocking] = useState<boolean>(true);
|
||||
const [lockingEnabled, setLockingEnabled] = useState<boolean>(false);
|
||||
const [rewindSelect, setRewindSelect] = useState<boolean>(false);
|
||||
const [selectedObjects, setSelectedObjects] = useState<string[]>([]);
|
||||
const [previewOpen, setPreviewOpen] = useState<boolean>(false);
|
||||
@@ -436,6 +438,25 @@ const ListObjects = ({
|
||||
}
|
||||
}, [bucketName, loadingVersioning, setErrorSnackMessage, displayListObjects]);
|
||||
|
||||
useEffect(() => {
|
||||
if (loadingLocking) {
|
||||
if (displayListObjects) {
|
||||
api
|
||||
.invoke("GET", `/api/v1/buckets/${bucketName}/object-locking`)
|
||||
.then((res: BucketObjectLocking) => {
|
||||
setLockingEnabled(res.object_locking_enabled);
|
||||
setLoadingLocking(false);
|
||||
})
|
||||
.catch((err: ErrorResponseHandler) => {
|
||||
setErrorSnackMessage(err);
|
||||
setLoadingLocking(false);
|
||||
});
|
||||
} else {
|
||||
setLoadingLocking(false);
|
||||
}
|
||||
}
|
||||
}, [bucketName, loadingLocking, setErrorSnackMessage, displayListObjects]);
|
||||
|
||||
// Rewind
|
||||
useEffect(() => {
|
||||
if (rewindEnabled) {
|
||||
@@ -1392,6 +1413,7 @@ const ListObjects = ({
|
||||
bucketName={bucketName}
|
||||
onClosePanel={onClosePanel}
|
||||
versioning={isVersioned}
|
||||
locking={lockingEnabled}
|
||||
/>
|
||||
)}
|
||||
</DetailsListPanel>
|
||||
|
||||
@@ -123,6 +123,7 @@ interface IObjectDetailPanelProps {
|
||||
bucketToRewind: string;
|
||||
distributedSetup: boolean;
|
||||
versioning: boolean;
|
||||
locking: boolean;
|
||||
versionsMode: boolean;
|
||||
selectedVersion: string;
|
||||
loadingObjectInfo: boolean;
|
||||
@@ -156,6 +157,7 @@ const ObjectDetailPanel = ({
|
||||
bucketName,
|
||||
distributedSetup,
|
||||
versioning,
|
||||
locking,
|
||||
setErrorSnackMessage,
|
||||
setNewObject,
|
||||
updateProgress,
|
||||
@@ -405,11 +407,8 @@ const ObjectDetailPanel = ({
|
||||
},
|
||||
label: "Legal Hold",
|
||||
disabled:
|
||||
!distributedSetup ||
|
||||
!!actualInfo.is_delete_marker ||
|
||||
!hasPermission(objectResources, [
|
||||
IAM_SCOPES.S3_PUT_OBJECT_LEGAL_HOLD,
|
||||
]) ||
|
||||
!locking || !distributedSetup || !!actualInfo.is_delete_marker ||
|
||||
!hasPermission(bucketName, [IAM_SCOPES.S3_PUT_OBJECT_LEGAL_HOLD]) ||
|
||||
selectedVersion !== "",
|
||||
icon: <LegalHoldIcon />,
|
||||
tooltip: "Change Legal Hold rules for this File",
|
||||
|
||||
Reference in New Issue
Block a user