Обновлены компоненты для улучшения обработки групп быстрого поиска и деталей узлов. Внесены изменения в логику отображения подкатегорий в VinCategory и VinLeftbar, добавлены комментарии для ясности. Исправлены условия пропуска запросов и обновлены типы для поддержки SSD узлов.
This commit is contained in:
@ -46,7 +46,7 @@ const VehicleDetailsPage = () => {
|
||||
if (searchTypeParam === 'categories') {
|
||||
// В URL categories, но мы используем quickgroups для групп быстрого поиска
|
||||
defaultSearchType = 'quickgroups';
|
||||
console.log('🔄 URL содержит searchType=categories, интерпретируем как quickgroups (группы быстрого поиска)');
|
||||
|
||||
} else if (searchTypeParam === 'quickgroups') {
|
||||
defaultSearchType = 'quickgroups';
|
||||
} else if (searchTypeParam === 'fulltext') {
|
||||
@ -109,27 +109,14 @@ const VehicleDetailsPage = () => {
|
||||
const storedSsd = localStorage.getItem(vehicleKey);
|
||||
if (storedSsd) {
|
||||
finalSsd = storedSsd;
|
||||
console.log('🔧 SSD получен из localStorage, длина:', storedSsd.length);
|
||||
// НЕ ОЧИЩАЕМ SSD сразу, оставляем на случай перезагрузки страницы
|
||||
// localStorage.removeItem(vehicleKey);
|
||||
} else {
|
||||
console.log('⚠️ SSD не найден в localStorage, ключ:', vehicleKey);
|
||||
console.log('🔍 Все ключи localStorage:', Object.keys(localStorage));
|
||||
}
|
||||
} else if (ssdFromQuery && ssdFromQuery.trim() !== '') {
|
||||
finalSsd = ssdFromQuery;
|
||||
console.log('🔧 SSD получен из URL');
|
||||
}
|
||||
|
||||
console.log('🔍 Vehicle page params:', {
|
||||
brand,
|
||||
vehicleId,
|
||||
useStorage,
|
||||
ssdLengthFromUrl,
|
||||
ssdFromQuery: ssdFromQuery ? `${ssdFromQuery.substring(0, 50)}...` : 'отсутствует',
|
||||
finalSsd: finalSsd ? `${finalSsd.substring(0, 50)}...` : 'отсутствует',
|
||||
ssdLength: finalSsd.length
|
||||
});
|
||||
|
||||
|
||||
const { data: vehicleData, loading: vehicleLoading, error: vehicleError } = useQuery<{ laximoVehicleInfo: LaximoVehicleInfo }>(
|
||||
GET_LAXIMO_VEHICLE_INFO,
|
||||
@ -141,9 +128,56 @@ const VehicleDetailsPage = () => {
|
||||
localized: true
|
||||
},
|
||||
skip: !brand || vehicleId === undefined || vehicleId === null,
|
||||
errorPolicy: 'all'
|
||||
errorPolicy: 'all',
|
||||
onCompleted: (data) => {
|
||||
console.log('🔍 VehicleInfo GraphQL completed:', {
|
||||
requestedVehicleId: vehicleId,
|
||||
returnedVehicleId: data?.laximoVehicleInfo?.vehicleid,
|
||||
vehicleName: data?.laximoVehicleInfo?.name,
|
||||
ssdUsed: finalSsd?.substring(0, 50) + '...',
|
||||
fullData: data
|
||||
});
|
||||
|
||||
if (data?.laximoVehicleInfo?.vehicleid !== vehicleId) {
|
||||
console.log('🚨 ОБНАРУЖЕНО НЕСООТВЕТСТВИЕ VEHICLE ID!');
|
||||
console.log(`📍 URL vehicleId: ${vehicleId}`);
|
||||
console.log(`📍 API vehicleId: ${data?.laximoVehicleInfo?.vehicleid}`);
|
||||
} else {
|
||||
console.log('✅ Vehicle ID соответствует URL');
|
||||
}
|
||||
},
|
||||
onError: (error) => {
|
||||
console.error('❌ VehicleInfo GraphQL error:', error);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
// Автоматическое перенаправление на правильный vehicleId если API вернул другой ID
|
||||
useEffect(() => {
|
||||
if (vehicleData?.laximoVehicleInfo && vehicleData.laximoVehicleInfo.vehicleid !== vehicleId) {
|
||||
const correctVehicleId = vehicleData.laximoVehicleInfo.vehicleid;
|
||||
console.log(`🔄 Автоматическое перенаправление: ${vehicleId} -> ${correctVehicleId}`);
|
||||
|
||||
// Обновляем localStorage с правильным ключом
|
||||
if (finalSsd && typeof window !== 'undefined') {
|
||||
const oldKey = `vehicle_ssd_${brand}_${vehicleId}`;
|
||||
const newKey = `vehicle_ssd_${brand}_${correctVehicleId}`;
|
||||
|
||||
// Перемещаем SSD на правильный ключ
|
||||
localStorage.setItem(newKey, finalSsd);
|
||||
localStorage.removeItem(oldKey);
|
||||
console.log(`💾 SSD перемещен: ${oldKey} -> ${newKey}`);
|
||||
}
|
||||
|
||||
// Строим новый URL с правильным vehicleId
|
||||
const currentParams = new URLSearchParams(window.location.search);
|
||||
const newUrl = `/vehicle-search/${brand}/${correctVehicleId}?${currentParams.toString()}`;
|
||||
|
||||
// Перенаправляем на правильный URL
|
||||
router.replace(newUrl);
|
||||
return;
|
||||
}
|
||||
}, [vehicleData, vehicleId, brand, finalSsd, router]);
|
||||
|
||||
// Получаем детали выбранного узла, если он выбран
|
||||
const {
|
||||
@ -249,12 +283,7 @@ const VehicleDetailsPage = () => {
|
||||
vehicleInfo = { ...vehicleInfo, vehicleid: fallbackVehicleId };
|
||||
}
|
||||
|
||||
// Логируем, что реально передаём в VinLeftbar
|
||||
console.log('Передаём в VinLeftbar:', {
|
||||
catalog: vehicleInfo.catalog,
|
||||
vehicleid: vehicleInfo.vehicleid,
|
||||
ssd: vehicleInfo.ssd
|
||||
});
|
||||
|
||||
|
||||
// Если нет данных автомобиля и есть ошибка, показываем предупреждение
|
||||
const hasError = vehicleError && !vehicleData?.laximoVehicleInfo;
|
||||
|
Reference in New Issue
Block a user