import type { JSX } from 'react'; import Link from 'next/link'; import { pagePathUtils } from '@growi/core/dist/utils'; import { UserPicture } from '@growi/ui/dist/components'; import { useAtomValue } from 'jotai'; import { useTranslation } from 'next-i18next'; import { DropdownItem, DropdownMenu, DropdownToggle, UncontrolledDropdown, } from 'reactstrap'; import { apiv3Post } from '~/client/util/apiv3-client'; import { toastError } from '~/client/util/toastr'; import { useCurrentUser } from '~/states/global'; import { disableUserPagesAtom } from '~/states/server-configurations'; import { SkeletonItem } from './SkeletonItem'; import styles from './PersonalDropdown.module.scss'; export const PersonalDropdown = (): JSX.Element => { const { t } = useTranslation('commons'); const currentUser = useCurrentUser(); const disableUserPages = useAtomValue(disableUserPagesAtom); if (currentUser == null) { return ; } const logoutHandler = async () => { try { await apiv3Post('/logout'); window.location.reload(); } catch (err) { toastError(err); } }; return (
{currentUser.name}
person {currentUser.username}
mail {currentUser.email}
{!disableUserPages && ( home {t('personal_dropdown.home')} )} discover_tune {t('personal_dropdown.settings')} logout {t('Sign out')}
); };