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

58 lines
1.5 KiB
TypeScript
Raw Normal View History

2023-07-15 17:46:19 +03:00
import { useNavigate } from 'react-router-dom';
2023-07-25 20:27:29 +03:00
2023-07-15 17:46:19 +03:00
import { useAuth } from '../../context/AuthContext';
import { useConceptTheme } from '../../context/ThemeContext';
2023-07-20 17:11:03 +03:00
import Dropdown from '../Common/Dropdown';
2023-07-25 20:27:29 +03:00
import DropdownButton from '../Common/DropdownButton';
2023-07-15 17:46:19 +03:00
interface UserDropdownProps {
2023-07-25 20:27:29 +03:00
hideDropdown: () => void
2023-07-15 17:46:19 +03:00
}
2023-07-25 20:27:29 +03:00
function UserDropdown({ hideDropdown }: UserDropdownProps) {
const { darkMode, toggleDarkMode } = useConceptTheme();
2023-07-15 17:46:19 +03:00
const navigate = useNavigate();
2023-07-25 20:27:29 +03:00
const { user, logout } = useAuth();
2023-07-15 17:46:19 +03:00
const navigateProfile = () => {
2023-08-27 16:35:17 +03:00
hideDropdown();
2023-07-15 17:46:19 +03:00
navigate('/profile');
};
2023-07-25 20:27:29 +03:00
const logoutAndRedirect =
() => {
hideDropdown();
2023-08-27 16:35:17 +03:00
logout(() => navigate('/login/'));
2023-07-15 17:46:19 +03:00
};
2023-07-16 22:53:22 +03:00
const navigateMyWork = () => {
2023-07-25 20:27:29 +03:00
hideDropdown();
2023-09-01 23:44:02 +03:00
navigate(`/library`);
2023-07-16 22:53:22 +03:00
};
2023-07-15 17:46:19 +03:00
return (
2023-07-21 00:09:05 +03:00
<Dropdown widthClass='w-36' stretchLeft>
2023-08-27 16:35:17 +03:00
<DropdownButton
description='Профиль пользователя'
onClick={navigateProfile}
>
2023-07-21 00:09:05 +03:00
{user?.username}
</DropdownButton>
2023-08-27 16:35:17 +03:00
<DropdownButton
description='Переключение темы оформления'
onClick={toggleDarkMode}
>
2023-07-25 20:27:29 +03:00
{darkMode ? 'Светлая тема' : 'Темная тема'}
2023-07-21 00:09:05 +03:00
</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
);
}
2023-07-25 20:27:29 +03:00
export default UserDropdown;