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';
|
2023-07-25 00:20:37 +03:00
|
|
|
|
import { useConceptTheme } from '../../context/ThemeContext';
|
2023-09-02 00:03:49 +03:00
|
|
|
|
import { LibraryFilterStrategy } from '../../utils/models';
|
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-02 00:03:49 +03:00
|
|
|
|
navigate(`/library?filter=${LibraryFilterStrategy.PERSONAL}`);
|
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;
|