Удален файл интеграции с Parts Index API и обновлены компоненты для работы с корзиной и избранным. Добавлены функции для обработки добавления товаров в корзину с уведомлениями, улучшена логика работы с избранным, а также добавлены фильтры для истории поиска по производителю.

This commit is contained in:
Bivekich
2025-06-29 03:36:21 +03:00
parent d268bb3359
commit 7f91da525f
23 changed files with 685 additions and 780 deletions

View File

@ -1,7 +1,9 @@
import * as React from "react";
import Link from 'next/link';
import { useRouter } from 'next/router';
import { useQuery } from '@apollo/client';
import { useIsClient } from '@/lib/useIsomorphicLayoutEffect';
import { GET_CLIENT_ME } from '@/lib/graphql';
const menuItems = [
{ label: 'Заказы', href: '/profile-orders', icon: 'https://cdn.builder.io/api/v1/image/assets/TEMP/22ecd7e6251abe04521d03f0ac09f73018a8c2c8?placeholderIfAbsent=true&apiKey=f5bc5a2dc9b841d0aba1cc6c74a35920' },
@ -28,6 +30,15 @@ const LKMenu = React.forwardRef<HTMLDivElement>((props, ref) => {
const router = useRouter();
const isClient = useIsClient();
// Получаем данные клиента для проверки наличия юридических лиц
const { data: clientData } = useQuery(GET_CLIENT_ME, {
skip: !isClient,
errorPolicy: 'ignore' // Игнорируем ошибки, чтобы не ломать интерфейс
});
// Проверяем есть ли у клиента юридические лица
const hasLegalEntities = clientData?.clientMe?.legalEntities && clientData.clientMe.legalEntities.length > 0;
const handleLogout = () => {
if (isClient) {
localStorage.removeItem('authToken');
@ -66,31 +77,37 @@ const LKMenu = React.forwardRef<HTMLDivElement>((props, ref) => {
);
})}
</div>
<div className="gap-2.5 self-start px-2.5 pt-2.5 mt-3 whitespace-nowrap text-gray-950">
Финансы
</div>
<div className="flex flex-col mt-3 w-full text-base leading-snug text-gray-600">
{financeItems.map((item) => {
const isActive = normalizePath(router.asPath) === normalizePath(item.href);
return (
<Link href={item.href} key={item.href}>
<div
className={`flex gap-2.5 items-center px-2.5 py-2 w-full whitespace-nowrap rounded-lg ${
isActive ? 'bg-slate-200' : 'bg-white'
}`}
>
<img
loading="lazy"
src={item.icon}
className="object-contain shrink-0 self-stretch my-auto w-5 aspect-square"
alt={item.label}
/>
<div className="self-stretch my-auto text-gray-600">{item.label}</div>
</div>
</Link>
);
})}
</div>
{/* Раздел "Финансы" показываем только если есть юридические лица */}
{hasLegalEntities && (
<>
<div className="gap-2.5 self-start px-2.5 pt-2.5 mt-3 whitespace-nowrap text-gray-950">
Финансы
</div>
<div className="flex flex-col mt-3 w-full text-base leading-snug text-gray-600">
{financeItems.map((item) => {
const isActive = normalizePath(router.asPath) === normalizePath(item.href);
return (
<Link href={item.href} key={item.href}>
<div
className={`flex gap-2.5 items-center px-2.5 py-2 w-full whitespace-nowrap rounded-lg ${
isActive ? 'bg-slate-200' : 'bg-white'
}`}
>
<img
loading="lazy"
src={item.icon}
className="object-contain shrink-0 self-stretch my-auto w-5 aspect-square"
alt={item.label}
/>
<div className="self-stretch my-auto text-gray-600">{item.label}</div>
</div>
</Link>
);
})}
</div>
</>
)}
{/* Кнопка выхода */}
<div className="mt-3">