'use client' import React, { useState, useEffect } from 'react' import ObjectGallery from '../../../components/objects/ObjectGallery' import { ObjectData } from '../../../components/objects/ObjectCard' import Sidebar from '../../../components/ui/Sidebar' // Универсальная функция для преобразования объекта из бэкенда в ObjectData const transformRawToObjectData = (raw: any): ObjectData => { const rawId = raw?.id ?? raw?.object_id ?? raw?.uuid ?? raw?.name const object_id = typeof rawId === 'number' ? `object_${rawId}` : String(rawId ?? '') return { object_id, title: raw?.title ?? `Объект ${object_id}`, description: raw?.description ?? `Описание объекта ${raw?.title ?? object_id}`, image: raw?.image ?? '/images/test_image.png', location: raw?.location ?? raw?.address ?? 'Не указано', floors: Number(raw?.floors ?? 0), area: String(raw?.area ?? ''), type: raw?.type ?? 'object', status: raw?.status ?? 'active', } } const ObjectsPage: React.FC = () => { const [objects, setObjects] = useState([]) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) const [selectedObjectId, setSelectedObjectId] = useState(null) useEffect(() => { const loadData = async () => { setLoading(true) setError(null) try { const url = '/api/get-objects' const res = await fetch(url, { cache: 'no-store' }) const payloadText = await res.text() let payload: any try { payload = JSON.parse(payloadText) } catch { payload = payloadText } console.log('[ObjectsPage] GET /api/get-objects', { status: res.status, payload }) if (!res.ok) { throw new Error(typeof payload === 'string' ? payload : (payload?.error || 'Не удалось получить данные объектов')) } const data = (payload?.data ?? payload) as any let rawObjectsArray: any[] = [] if (Array.isArray(data)) { rawObjectsArray = data } else if (Array.isArray(data?.objects)) { rawObjectsArray = data.objects } else if (data && typeof data === 'object') { // если приходит как map { id: obj } rawObjectsArray = Object.values(data) } const transformedObjects = rawObjectsArray.map(transformRawToObjectData) setObjects(transformedObjects) } catch (err: any) { console.error('Ошибка при загрузке данных объектов:', err) setError(err?.message || 'Произошла неизвестная ошибка') } finally { setLoading(false) } } loadData() }, []) const handleObjectSelect = (objectId: string) => { console.log('Object selected:', objectId) setSelectedObjectId(objectId) } if (loading) { return (

Загрузка объектов...

) } if (error) { return (

Ошибка загрузки

{error}

) } return (
) } export default ObjectsPage