import Transition from '@app/components/Transition'; import useClickOutside from '@app/hooks/useClickOutside'; import { useUser } from '@app/hooks/useUser'; import { LogoutIcon } from '@heroicons/react/outline'; import { CogIcon, UserIcon } from '@heroicons/react/solid'; import axios from 'axios'; import Link from 'next/link'; import { useRef, useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; const messages = defineMessages({ myprofile: 'Profile', settings: 'Settings', signout: 'Sign Out', }); const UserDropdown = () => { const intl = useIntl(); const dropdownRef = useRef(null); const { user, revalidate } = useUser(); const [isDropdownOpen, setDropdownOpen] = useState(false); useClickOutside(dropdownRef, () => setDropdownOpen(false)); const logout = async () => { const response = await axios.post('/api/v1/auth/logout'); if (response.data?.status === 'ok') { revalidate(); } }; return (
{ if (e.key === 'Enter') { setDropdownOpen(false); } }} onClick={() => setDropdownOpen(false)} data-testid="user-menu-profile" > {intl.formatMessage(messages.myprofile)} { if (e.key === 'Enter') { setDropdownOpen(false); } }} onClick={() => setDropdownOpen(false)} data-testid="user-menu-settings" > {intl.formatMessage(messages.settings)} logout()} > {intl.formatMessage(messages.signout)}
); }; export default UserDropdown;