mirror of
https://github.com/lingble/twenty.git
synced 2025-11-01 21:27:58 +00:00
This PR was created by [GitStart](https://gitstart.com/) to address the requirements from this ticket: [TWNTY-7529](https://clients.gitstart.com/twenty/5449/tickets/TWNTY-7529). --- ### Description - Migrated all button components to `twenty-ui` \ \ `Button`\ `ButtonGroup`\ `ColorPickerButton`\ `FloatingButton`\ `FloatingButtonGroup`\ `FloatingIconButton`\ `FloatingIconButtonGroup`\ `IconButton`\ `IconButtonGroup`\ `LightButton`\ `LightIconButton`\ `LightIconButtonGroup`\ `MainButton`\ \ Fixes twentyhq/private-issues#89 Co-authored-by: gitstart-twenty <gitstart-twenty@users.noreply.github.com> Co-authored-by: Charles Bochet <charles@twenty.com>
107 lines
3.5 KiB
TypeScript
107 lines
3.5 KiB
TypeScript
/* @license Enterprise */
|
|
|
|
import {
|
|
IconArchive,
|
|
IconDotsVertical,
|
|
IconTrash,
|
|
LightIconButton,
|
|
} from 'twenty-ui';
|
|
|
|
import { useDeleteSSOIdentityProvider } from '@/settings/security/hooks/useDeleteSSOIdentityProvider';
|
|
import { useUpdateSSOIdentityProvider } from '@/settings/security/hooks/useUpdateSSOIdentityProvider';
|
|
import { SSOIdentitiesProvidersState } from '@/settings/security/states/SSOIdentitiesProviders.state';
|
|
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 { DropdownMenu } from '@/ui/layout/dropdown/components/DropdownMenu';
|
|
import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer';
|
|
import { useDropdown } from '@/ui/layout/dropdown/hooks/useDropdown';
|
|
import { MenuItem } from '@/ui/navigation/menu-item/components/MenuItem';
|
|
import { UnwrapRecoilValue } from 'recoil';
|
|
import { SsoIdentityProviderStatus } from '~/generated/graphql';
|
|
import { isDefined } from '~/utils/isDefined';
|
|
|
|
type SettingsSecuritySSORowDropdownMenuProps = {
|
|
SSOIdp: UnwrapRecoilValue<typeof SSOIdentitiesProvidersState>[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 handleDeleteSSOIdentityProvider = async (
|
|
identityProviderId: string,
|
|
) => {
|
|
const result = await deleteSSOIdentityProvider({
|
|
identityProviderId,
|
|
});
|
|
if (isDefined(result.errors)) {
|
|
enqueueSnackBar('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('Error editing SSO Identity Provider', {
|
|
variant: SnackBarVariant.Error,
|
|
duration: 2000,
|
|
});
|
|
}
|
|
};
|
|
|
|
return (
|
|
<Dropdown
|
|
dropdownId={dropdownId}
|
|
dropdownPlacement="right-start"
|
|
dropdownHotkeyScope={{ scope: dropdownId }}
|
|
clickableComponent={
|
|
<LightIconButton Icon={IconDotsVertical} accent="tertiary" />
|
|
}
|
|
dropdownComponents={
|
|
<DropdownMenu>
|
|
<DropdownMenuItemsContainer>
|
|
<MenuItem
|
|
accent="default"
|
|
LeftIcon={IconArchive}
|
|
text={SSOIdp.status === 'Active' ? 'Deactivate' : 'Activate'}
|
|
onClick={() => {
|
|
toggleSSOIdentityProviderStatus(SSOIdp.id);
|
|
closeDropdown();
|
|
}}
|
|
/>
|
|
<MenuItem
|
|
accent="danger"
|
|
LeftIcon={IconTrash}
|
|
text="Delete"
|
|
onClick={() => {
|
|
handleDeleteSSOIdentityProvider(SSOIdp.id);
|
|
closeDropdown();
|
|
}}
|
|
/>
|
|
</DropdownMenuItemsContainer>
|
|
</DropdownMenu>
|
|
}
|
|
/>
|
|
);
|
|
};
|