import { RootState } from "store/store";
import { ProjectResource } from "models/project";
import { withRouter, RouteComponentProps } from "react-router";
+import { resourceIsFrozen } from "common/frozen-resources";
const mapStateToProps = (state: RootState, props: { onClick: () => {} }) => ({
isAdmin: !!state.auth.user?.isAdmin,
isLocked: !!(state.resources[state.contextMenu.resource!.uuid] as ProjectResource).frozenByUuid,
canManage: (state.resources[state.contextMenu.resource!.uuid] as ProjectResource).canManage,
canUnfreeze: !state.auth.remoteHostsConfig[state.auth.homeCluster]?.clusterConfig?.API?.UnfreezeProjectRequiresAdmin,
+ resource: state.contextMenu.resource,
+ resources: state.resources,
onClick: props.onClick
});
-export const ToggleLockAction = withRouter(connect(mapStateToProps)((props: { state: RootState, isAdmin: boolean, isLocked: boolean, canManage: boolean, canUnfreeze: boolean, onClick: () => void } & RouteComponentProps) =>
+export const ToggleLockAction = withRouter(connect(mapStateToProps)((props: {
+ resource: any,
+ resources: any,
+ onClick: () => void,
+ state: RootState, isAdmin: boolean, isLocked: boolean, canManage: boolean, canUnfreeze: boolean,
+} & RouteComponentProps) =>
(props.canManage && !props.isLocked) || (props.isLocked && props.canManage && (props.canUnfreeze || props.isAdmin)) ?
- < ListItem
- button
- onClick={props.onClick} >
- <ListItemIcon>
- {props.isLocked
- ? <UnfreezeIcon />
- : <FreezeIcon />}
- </ListItemIcon>
- <ListItemText style={{ textDecoration: 'none' }}>
- {props.isLocked
- ? <>Unfreeze project</>
- : <>Freeze project</>}
- </ListItemText>
- </ListItem > : null));
+ resourceIsFrozen(props.resource, props.resources) ? null :
+ <ListItem
+ button
+ onClick={props.onClick} >
+ <ListItemIcon>
+ {props.isLocked
+ ? <UnfreezeIcon />
+ : <FreezeIcon />}
+ </ListItemIcon>
+ <ListItemText style={{ textDecoration: 'none' }}>
+ {props.isLocked
+ ? <>Unfreeze project</>
+ : <>Freeze project</>}
+ </ListItemText>
+ </ListItem > : null));