ConceptPortal-public/rsconcept/frontend/src/components/Navigation/UserDropdown.tsx

49 lines
1.4 KiB
TypeScript
Raw Normal View History

2023-07-15 17:46:19 +03:00
import { useNavigate } from 'react-router-dom';
import { useAuth } from '../../context/AuthContext';
2023-07-21 00:09:05 +03:00
import DropdownButton from '../Common/DropdownButton';
import { useConceptTheme } from '../../context/ThemeContext';
2023-07-20 17:11:03 +03:00
import Dropdown from '../Common/Dropdown';
2023-07-15 17:46:19 +03:00
interface UserDropdownProps {
hideDropdown: Function
}
function UserDropdown({hideDropdown}: UserDropdownProps) {
const {darkMode, toggleDarkMode} = useConceptTheme();
2023-07-15 17:46:19 +03:00
const navigate = useNavigate();
const {user, logout} = useAuth();
const navigateProfile = () => {
hideDropdown()
navigate('/profile');
};
const logoutAndRedirect = () => {
hideDropdown()
logout(() => {navigate('/login/');})
};
2023-07-16 22:53:22 +03:00
const navigateMyWork = () => {
hideDropdown()
navigate('/rsforms?filter=personal');
};
2023-07-15 17:46:19 +03:00
return (
2023-07-21 00:09:05 +03:00
<Dropdown widthClass='w-36' stretchLeft>
<DropdownButton description='Профиль пользователя' onClick={navigateProfile}>
{user?.username}
</DropdownButton>
<DropdownButton description='Переключение темы оформления' onClick={toggleDarkMode}>
{darkMode ? 'Светлая тема' : 'Темная тема'}
</DropdownButton>
<DropdownButton onClick={navigateMyWork}>
Мои схемы
</DropdownButton>
<DropdownButton onClick={logoutAndRedirect}>
<b>Выйти...</b>
</DropdownButton>
2023-07-20 17:11:03 +03:00
</Dropdown>
2023-07-15 17:46:19 +03:00
);
}
export default UserDropdown;