import { useConceptNavigation } from '@/app/Navigation/NavigationContext'; import { useAuthSuspense } from '@/backend/auth/useAuth'; import { useLogout } from '@/backend/auth/useLogout'; import { IconAdmin, IconAdminOff, IconDarkTheme, IconDatabase, IconDBStructure, IconHelp, IconHelpOff, IconImage, IconLightTheme, IconLogout, IconRESTapi, IconUser } from '@/components/Icons'; import { CProps } from '@/components/props'; import Dropdown from '@/components/ui/Dropdown'; import DropdownButton from '@/components/ui/DropdownButton'; import { usePreferencesStore } from '@/stores/preferences'; import { urls } from '../urls'; interface UserDropdownProps { isOpen: boolean; hideDropdown: () => void; } function UserDropdown({ isOpen, hideDropdown }: UserDropdownProps) { const router = useConceptNavigation(); const { user } = useAuthSuspense(); const { logout } = useLogout(); const darkMode = usePreferencesStore(state => state.darkMode); const toggleDarkMode = usePreferencesStore(state => state.toggleDarkMode); const showHelp = usePreferencesStore(state => state.showHelp); const toggleShowHelp = usePreferencesStore(state => state.toggleShowHelp); const adminMode = usePreferencesStore(state => state.adminMode); const toggleAdminMode = usePreferencesStore(state => state.toggleAdminMode); function navigateProfile(event: CProps.EventMouse) { hideDropdown(); router.push(urls.profile, event.ctrlKey || event.metaKey); } function logoutAndRedirect() { hideDropdown(); logout(() => router.push(urls.login)); } function gotoAdmin() { hideDropdown(); logout(() => router.push(urls.admin, true)); } function gotoIcons(event: CProps.EventMouse) { hideDropdown(); router.push(urls.icons, event.ctrlKey || event.metaKey); } function gotoRestApi() { hideDropdown(); router.push(urls.rest_api, true); } function gotoDatabaseSchema(event: CProps.EventMouse) { hideDropdown(); router.push(urls.database_schema, event.ctrlKey || event.metaKey); } function handleToggleDarkMode() { toggleDarkMode(); hideDropdown(); } return ( } onClick={navigateProfile} /> : } title='Переключение темы оформления' onClick={handleToggleDarkMode} /> : } title='Отображение иконок подсказок' onClick={toggleShowHelp} /> {user.is_staff ? ( : } title='Работа в режиме администратора' onClick={toggleAdminMode} /> ) : null} {user.is_staff ? ( } className='border-t' onClick={gotoRestApi} /> ) : null} {user.is_staff ? ( } onClick={gotoAdmin} /> ) : null} {user?.is_staff ? ( } onClick={gotoIcons} /> ) : null} {user.is_staff ? ( } onClick={gotoDatabaseSchema} className='border-b' /> ) : null} } onClick={logoutAndRedirect} /> ); } export default UserDropdown;