/* @license Enterprise */ import { IconArchive, IconDotsVertical, IconTrash, LightIconButton, MenuItem, } from 'twenty-ui'; import { useDeleteSSOIdentityProvider } from '@/settings/security/hooks/useDeleteSSOIdentityProvider'; import { useUpdateSSOIdentityProvider } from '@/settings/security/hooks/useUpdateSSOIdentityProvider'; import { SSOIdentitiesProvidersState } from '@/settings/security/states/SSOIdentitiesProvidersState'; import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar'; import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar'; import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown'; import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer'; import { useDropdown } from '@/ui/layout/dropdown/hooks/useDropdown'; import { useLingui } from '@lingui/react/macro'; import { UnwrapRecoilValue } from 'recoil'; import { isDefined } from 'twenty-shared'; import { SsoIdentityProviderStatus } from '~/generated/graphql'; type SettingsSecuritySSORowDropdownMenuProps = { SSOIdp: UnwrapRecoilValue[0]; }; export const SettingsSecuritySSORowDropdownMenu = ({ SSOIdp, }: SettingsSecuritySSORowDropdownMenuProps) => { const dropdownId = `settings-account-row-${SSOIdp.id}`; const { enqueueSnackBar } = useSnackBar(); const { closeDropdown } = useDropdown(dropdownId); const { deleteSSOIdentityProvider } = useDeleteSSOIdentityProvider(); const { updateSSOIdentityProvider } = useUpdateSSOIdentityProvider(); const { t } = useLingui(); const handleDeleteSSOIdentityProvider = async ( identityProviderId: string, ) => { const result = await deleteSSOIdentityProvider({ identityProviderId, }); if (isDefined(result.errors)) { enqueueSnackBar(t`Error deleting SSO Identity Provider`, { variant: SnackBarVariant.Error, duration: 2000, }); } }; const toggleSSOIdentityProviderStatus = async ( identityProviderId: string, ) => { const result = await updateSSOIdentityProvider({ id: identityProviderId, status: SSOIdp.status === 'Active' ? SsoIdentityProviderStatus.Inactive : SsoIdentityProviderStatus.Active, }); if (isDefined(result.errors)) { enqueueSnackBar(t`Error editing SSO Identity Provider`, { variant: SnackBarVariant.Error, duration: 2000, }); } }; return ( } dropdownMenuWidth={160} dropdownComponents={ { toggleSSOIdentityProviderStatus(SSOIdp.id); closeDropdown(); }} /> { handleDeleteSSOIdentityProvider(SSOIdp.id); closeDropdown(); }} /> } /> ); };