import MiniQuotaDisplay from '@app/components/Layout/UserDropdown/MiniQuotaDisplay'; import { useUser } from '@app/hooks/useUser'; import { Menu, Transition } from '@headlessui/react'; import { ClockIcon, LogoutIcon } from '@heroicons/react/outline'; import { CogIcon, UserIcon } from '@heroicons/react/solid'; import axios from 'axios'; import type { LinkProps } from 'next/link'; import Link from 'next/link'; import { forwardRef, Fragment } from 'react'; import { defineMessages, useIntl } from 'react-intl'; const messages = defineMessages({ myprofile: 'Profile', settings: 'Settings', requests: 'Requests', signout: 'Sign Out', }); const ForwardedLink = forwardRef< HTMLAnchorElement, LinkProps & React.ComponentPropsWithoutRef<'a'> >(({ href, children, ...rest }, ref) => { return ( {children} ); }); ForwardedLink.displayName = 'ForwardedLink'; const UserDropdown = () => { const intl = useIntl(); const { user, revalidate } = useUser(); const logout = async () => { const response = await axios.post('/api/v1/auth/logout'); if (response.data?.status === 'ok') { revalidate(); } }; return (
{user?.displayName} {user?.email}
{user && }
{({ active }) => ( {intl.formatMessage(messages.myprofile)} )} {({ active }) => ( {intl.formatMessage(messages.requests)} )} {({ active }) => ( {intl.formatMessage(messages.settings)} )} {({ active }) => ( logout()} > {intl.formatMessage(messages.signout)} )}
); }; export default UserDropdown;