import { Switch, SwitchProps } from '@mui/material'; import React from 'react'; import { formatAccessText } from 'utils/formatAccessText'; import { TooltipResolver } from 'component/common/TooltipResolver/TooltipResolver'; import { useHasProjectEnvironmentAccess, useHasRootAccess, } from 'hooks/useHasAccess'; interface IPermissionSwitchProps extends SwitchProps { permission: string; tooltip?: string; onChange?: (e: React.ChangeEvent) => void; disabled?: boolean; projectId?: string; environmentId?: string; checked: boolean; } interface IBasePermissionSwitchProps extends IPermissionSwitchProps { access: boolean; } const ProjectenvironmentPermissionSwitch = React.forwardRef< HTMLButtonElement, IPermissionSwitchProps & { projectId: string; environmentId: string } >((props, ref) => { const access = useHasProjectEnvironmentAccess( props.permission, props.projectId, props.environmentId, ); return ; }); const RootPermissionSwitch = React.forwardRef< HTMLButtonElement, IPermissionSwitchProps >((props, ref) => { const access = useHasRootAccess( props.permission, props.projectId, props.environmentId, ); return ; }); const BasePermissionSwitch = React.forwardRef< HTMLButtonElement, IBasePermissionSwitchProps >((props, ref) => { const { access, permission, tooltip, disabled, projectId, environmentId, checked, onChange, ...rest } = props; return ( ); }); const PermissionSwitch = React.forwardRef< HTMLButtonElement, IPermissionSwitchProps >((props, ref) => { if ( typeof props.projectId !== 'undefined' && typeof props.environmentId !== 'undefined' ) { return ( ); } return ; }); export default PermissionSwitch;