import { approvedAccessDomainsState } from '@/settings/security/states/ApprovedAccessDomainsState'; 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 { DropdownContent } from '@/ui/layout/dropdown/components/DropdownContent'; import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer'; import { useDropdown } from '@/ui/layout/dropdown/hooks/useDropdown'; import { UnwrapRecoilValue, useSetRecoilState } from 'recoil'; import { isDefined } from 'twenty-shared/utils'; import { IconDotsVertical, IconTrash } from 'twenty-ui/display'; import { LightIconButton } from 'twenty-ui/input'; import { MenuItem } from 'twenty-ui/navigation'; import { useDeleteApprovedAccessDomainMutation } from '~/generated-metadata/graphql'; type SettingsSecurityApprovedAccessDomainRowDropdownMenuProps = { approvedAccessDomain: UnwrapRecoilValue[0]; }; export const SettingsSecurityApprovedAccessDomainRowDropdownMenu = ({ approvedAccessDomain, }: SettingsSecurityApprovedAccessDomainRowDropdownMenuProps) => { const dropdownId = `settings-approved-access-domain-row-${approvedAccessDomain.id}`; const setApprovedAccessDomains = useSetRecoilState( approvedAccessDomainsState, ); const { enqueueSnackBar } = useSnackBar(); const { closeDropdown } = useDropdown(dropdownId); const [deleteApprovedAccessDomain] = useDeleteApprovedAccessDomainMutation(); const handleDeleteApprovedAccessDomain = async () => { const result = await deleteApprovedAccessDomain({ variables: { input: { id: approvedAccessDomain.id, }, }, onCompleted: () => { setApprovedAccessDomains((approvedAccessDomains) => { return approvedAccessDomains.filter( ({ id }) => id !== approvedAccessDomain.id, ); }); }, }); if (isDefined(result.errors)) { enqueueSnackBar('Error deleting approved access domain', { variant: SnackBarVariant.Error, duration: 2000, }); } }; return ( } dropdownComponents={ { handleDeleteApprovedAccessDomain(); closeDropdown(); }} /> } /> ); };