18692: Fixed project not refreshing post freeze
[arvados-workbench2.git] / src / views-components / context-menu / actions / lock-action.tsx
index 8d141e9640d61eedd89e881bce58ddf360a0b39f..99eb756db985a270084884bdb44e2fae3135d732 100644 (file)
@@ -9,28 +9,37 @@ import { connect } from "react-redux";
 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));