fix base_api error

This commit is contained in:
nabijonovdavronbek619@gmail.com
2026-04-10 16:53:29 +05:00
parent 553db7194a
commit b4fd590eda
9 changed files with 151 additions and 58 deletions

View File

@@ -1,3 +1,5 @@
'use client';
import { usePathname } from 'next/navigation';
import { MenuItem } from '../lib/model';
const SubMenuLink = ({
@@ -7,11 +9,17 @@ const SubMenuLink = ({
item: MenuItem;
logOut?: () => void;
}) => {
const pathname = usePathname();
const isCabinet = pathname.includes('/cabinet');
return (
<a
className="flex flex-row gap-4 rounded-md p-3 leading-none no-underline transition-colors outline-none select-none hover:bg-muted hover:text-accent-foreground"
href={item.url}
onClick={() => {
href={isCabinet && item.url === '/cabinet' ? undefined : item.url}
onClick={(e) => {
if (isCabinet && item.url === '/cabinet') {
e.preventDefault();
}
if (logOut) {
logOut();
}

View File

@@ -2,37 +2,70 @@
import { Link } from '@/shared/config/i18n/navigation';
import { Button } from '@/shared/ui/button';
import {
NavigationMenu,
NavigationMenuContent,
NavigationMenuItem,
NavigationMenuLink,
NavigationMenuList,
NavigationMenuTrigger,
} from '@/shared/ui/navigation-menu';
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuTrigger,
} from '@/shared/ui/dropdown-menu';
import SubMenuLink from './SubMenuLink';
import { ChangeLang } from './ChangeLang';
import { useLoginModal, useRegisterModal } from '@/shared/zustand/auth';
import { useTranslations } from 'next-intl';
import { useUserPlagiatStore } from '@/shared/zustand/user';
import { LogOut, User } from 'lucide-react';
import {
ChevronDown,
LogOut,
User,
LayoutDashboard,
FileSearch,
BrainCircuit,
CreditCard,
} from 'lucide-react';
import { useEffect, useState } from 'react';
import { useCabinetNav } from '@/shared/zustand/cabinetNav';
function AuthButtons() {
const t = useTranslations('Navbar');
const t_cab = useTranslations('Cabinet');
const setNavItem = useCabinetNav((state) => state.setNavItem);
const [localUser, setLocalUser] = useState<{
id: number;
name: string;
surname: string;
} | null>(null);
const [open, setOpen] = useState(false);
const auth = {
login: { title: t('login'), url: '#' },
signup: { title: t('signup'), url: '#' },
};
const userItem = [
{ title: t('profile'), url: '/cabinet', icon: User },
{ title: t('logout'), url: '/', icon: LogOut },
{ title: t('profile'), url: '/cabinet', icon: User, key: 'profile' },
{
url: '/cabinet',
title: t_cab('dashboard'),
icon: LayoutDashboard,
key: 'dashboard',
},
{
url: '/cabinet',
title: t_cab('plagiat'),
icon: FileSearch,
key: 'plagiat',
},
{
url: '/cabinet',
title: t_cab('siNav'),
icon: BrainCircuit,
key: 'si',
},
{
url: '/cabinet',
title: t_cab('payments'),
icon: CreditCard,
key: 'payments',
},
{ title: t('logout'), url: '/', icon: LogOut, key: 'logout' },
];
const toggleLoginModal = useLoginModal((state) => state.toggleLoginModal);
@@ -51,7 +84,6 @@ function AuthButtons() {
useEffect(() => {
const data = localStorage.getItem('user');
if (data) {
setLocalUser(JSON.parse(data));
} else {
@@ -65,33 +97,29 @@ function AuthButtons() {
<div className="sm:flex hidden">
<ChangeLang />
</div>
<NavigationMenu viewport={true}>
<NavigationMenuList>
<NavigationMenuItem>
<NavigationMenuTrigger className="text-lg">
{localUser.name}
</NavigationMenuTrigger>
<NavigationMenuContent className="bg-popover text-popover-foreground">
{userItem.map((subItem) => (
<NavigationMenuLink
asChild
key={subItem.title}
className="w-80"
>
<SubMenuLink
logOut={() => {
if (subItem.url !== '/cabinet') {
clearTokens();
}
}}
item={subItem}
/>
</NavigationMenuLink>
))}
</NavigationMenuContent>
</NavigationMenuItem>
</NavigationMenuList>
</NavigationMenu>
<DropdownMenu open={open} onOpenChange={setOpen}>
<DropdownMenuTrigger className="inline-flex items-center gap-1 text-lg font-medium outline-none">
{localUser.name}
<ChevronDown className="size-4" />
</DropdownMenuTrigger>
<DropdownMenuContent className="">
{userItem.map((subItem) => (
<DropdownMenuItem key={subItem.title} asChild>
<SubMenuLink
logOut={() => {
setOpen(false);
if (subItem.url !== '/cabinet') {
clearTokens();
} else {
setNavItem(subItem.key);
}
}}
item={subItem}
/>
</DropdownMenuItem>
))}
</DropdownMenuContent>
</DropdownMenu>
</div>
);
}