import { useRef, useState } from 'react'; import { UserPicture } from '@growi/ui/dist/components'; import { useTranslation } from 'next-i18next'; import dynamic from 'next/dynamic'; import Link from 'next/link'; import { useRipple } from 'react-use-ripple'; import { apiv3Post } from '~/client/util/apiv3-client'; import { toastError } from '~/client/util/toastr'; import { useCurrentUser } from '~/stores/context'; const ProactiveQuestionnaireModal = dynamic(() => import('~/features/questionnaire/client/components/ProactiveQuestionnaireModal'), { ssr: false }); const PersonalDropdown = () => { const { t } = useTranslation('commons'); const { data: currentUser } = useCurrentUser(); const [isQuestionnaireModalOpen, setQuestionnaireModalOpen] = useState(false); // ripple const buttonRef = useRef(null); useRipple(buttonRef, { rippleColor: 'rgba(255, 255, 255, 0.3)' }); if (currentUser == null) { return
; } const logoutHandler = async() => { try { await apiv3Post('/logout'); window.location.reload(); } catch (err) { toastError(err); } }; return ( <> {/* Button */} {/* remove .dropdown-toggle for hide caret */} {/* See https://stackoverflow.com/a/44577512/13183572 */} {/* Menu */}
{currentUser.name}
{currentUser.username}
{currentUser.email}
{t('personal_dropdown.home')} {t('personal_dropdown.settings')}
setQuestionnaireModalOpen(false)} /> ); }; export default PersonalDropdown;