import React, { useEffect, useState } from 'react'; import './MedicineResults.css'; import { pushSupported, isSubscribedLocally, subscribeToPush, unsubscribeFromPush, } from '../utils/notifications.js'; function MedicineResults({ medicines, onSelect, query, currentUser, onLoginRequest }) { if (medicines.length === 0 && query.length >= 2) { return (

No se encontraron medicamentos para "{query}"

); } return (
{medicines.map((medicine) => ( ))}
); } function MedicineCard({ medicine, onSelect, currentUser, onLoginRequest }) { const nregistro = medicine.nregistro || medicine.id; const [subscribed, setSubscribed] = useState(() => isSubscribedLocally(nregistro)); const [busy, setBusy] = useState(false); const [error, setError] = useState(null); const supported = pushSupported(); useEffect(() => { setSubscribed(isSubscribedLocally(nregistro)); }, [nregistro]); async function handleBell(e) { e.stopPropagation(); if (!currentUser) { onLoginRequest?.(); return; } if (!supported) { setError('Las notificaciones requieren iOS 16.4+ y este sitio instalado como app (Compartir → Añadir a Pantalla de Inicio).'); return; } if (busy) return; setBusy(true); setError(null); try { if (subscribed) { await unsubscribeFromPush(nregistro); setSubscribed(false); } else { await subscribeToPush(nregistro, medicine.name); setSubscribed(true); } } catch (err) { console.error('[notify] toggle failed:', err); setError(err.message || 'No se pudo actualizar la suscripción'); } finally { setBusy(false); } } return (
onSelect(medicine)}>

{medicine.name}

Principio Activo: {medicine.active_ingredient}

Dosis: {medicine.dosage} • Forma: {medicine.form}

{error &&

e.stopPropagation()}>{error}

}
Ver farmacias →
); } export default MedicineResults;