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

47 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';
import NavigationTextItem from './NavigationTextItem';
import { useTheme } 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} = useTheme();
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-20 17:11:03 +03:00
<Dropdown widthClass='w-36' stretchLeft >
<NavigationTextItem description='Профиль пользователя'
text={user?.username}
onClick={navigateProfile}
/>
<NavigationTextItem description='Переключение темы оформления'
text={darkMode ? 'Светлая тема' : 'Темная тема'}
onClick={toggleDarkMode}
/>
<NavigationTextItem text={'Мои схемы'} onClick={navigateMyWork} />
<NavigationTextItem text={'Выйти...'} bold onClick={logoutAndRedirect} />
</Dropdown>
2023-07-15 17:46:19 +03:00
);
}
export default UserDropdown;