import React, { useState, useEffect } from 'react'; import PharmacyMap from '../components/PharmacyMap'; import './ProductView.css'; export default function ProductView({ source, id, onBack }) { const [product, setProduct] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const [pharmacies, setPharmacies] = useState([]); const [loadingPharmacies, setLoadingPharmacies] = useState(false); useEffect(() => { loadProduct(); }, [source, id]); async function loadProduct() { setLoading(true); setError(null); setPharmacies([]); try { // Use parapharmacy endpoint for all non-CIMA sources const isCima = source === 'cima'; const apiUrl = isCima ? `/api/products/${source}/${id}` : `/api/products/parapharmacy/${id}`; const response = await fetch(apiUrl); if (!response.ok) { throw new Error('Producto no encontrado'); } const data = await response.json(); setProduct(data); loadPharmacies(source, data.id || data._id); } catch (err) { setError(err.message); } finally { setLoading(false); } } async function loadPharmacies(productSource, productId) { setLoadingPharmacies(true); try { const response = await fetch(`/api/products/${productSource}/${productId}/pharmacies`); if (response.ok) { const data = await response.json(); setPharmacies(data); } } catch { // Pharmacies are optional — don't block on failure } finally { setLoadingPharmacies(false); } } if (loading) { return (
{product.brand}
{pharmacy.address}
{pharmacy.phone && ({pharmacy.phone}
)}