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;