import React from 'react'; import Cookies from 'js-cookie'; import { Dropdown } from 'antd'; import { CaretDownOutlined } from '@ant-design/icons'; import styled, { useTheme } from 'styled-components'; import { EntityType } from '../../types.generated'; import { useEntityRegistry } from '../useEntityRegistry'; import { GlobalCfg } from '../../conf'; import { isLoggedInVar } from '../auth/checkAuthStatus'; import CustomAvatar from './avatar/CustomAvatar'; import analytics, { EventType } from '../analytics'; import { ANTD_GRAY } from '../entity/shared/constants'; import { useAppConfig } from '../useAppConfig'; import { useUserContext } from '../context/useUserContext'; import { MenuItemStyle } from '../entity/view/menu/item/styledComponent'; const DownArrow = styled(CaretDownOutlined)` vertical-align: -1px; font-size: 10px; color: ${ANTD_GRAY[7]}; `; const DropdownWrapper = styled.div` align-items: center; cursor: pointer; display: flex; `; interface Props { urn: string; pictureLink?: string; name?: string; } const defaultProps = { pictureLink: undefined, }; export const ManageAccount = ({ urn: _urn, pictureLink: _pictureLink, name }: Props) => { const entityRegistry = useEntityRegistry(); const themeConfig = useTheme(); const { config } = useAppConfig(); const userContext = useUserContext(); const handleLogout = () => { analytics.event({ type: EventType.LogOutEvent }); isLoggedInVar(false); Cookies.remove(GlobalCfg.CLIENT_AUTH_COOKIE); userContext.updateLocalState({ selectedViewUrn: undefined }); }; const version = config?.appVersion; const themeConfigItems = themeConfig.content.menu.items.map((value) => { return { key: value.label, label: ( {value.label} ), }; }); const divider = { key: 'divider', type: 'divider', }; const items = [ version ? { key: 'version', label: ( {version} ), } : null, divider, { key: 'profile', label: ( Your Profile ), }, ...themeConfigItems, { key: 'graphiQLLink', label: ( GraphiQL ), }, { key: 'openapiLink', label: ( OpenAPI ), }, divider, { key: 'logout', label: ( Sign Out ), }, ]; return ( ); }; ManageAccount.defaultProps = defaultProps;