import { useParams, Link } from 'react-router-dom' import { useQuery } from '@tanstack/react-query' import { formatDistanceToNow } from 'date-fns' import { es } from 'date-fns/locale' import { apiService } from '../services/api' import { Globe, ArrowLeft, ExternalLink, Newspaper, Heart } from 'lucide-react' import { useState, useEffect } from 'react' import { WikiTooltip } from '../components/ui/WikiTooltip' export function News() { const { id } = useParams<{ id: string }>() const [isFavorite, setIsFavorite] = useState(false) const { data: news, isLoading, error } = useQuery({ queryKey: ['news', id], queryFn: () => apiService.getNewsById(id!), enabled: !!id, }) useEffect(() => { const stored = localStorage.getItem('favorites') if (stored && id) { const favorites = JSON.parse(stored) setIsFavorite(favorites.some((n: any) => n.id === id)) } }, [id]) const toggleFavorite = () => { const stored = localStorage.getItem('favorites') let favorites = stored ? JSON.parse(stored) : [] if (isFavorite) { favorites = favorites.filter((n: any) => n.id !== id) } else if (news) { favorites.push(news) } localStorage.setItem('favorites', JSON.stringify(favorites)) setIsFavorite(!isFavorite) } if (isLoading) { return (
) } if (error || !news) { return (

Error al cargar la noticia

Volver al inicio
) } return (
Volver
{news.imagen_url && news.imagen_url.trim() && ( {news.titulo} )}
{news.fuente_nombre && ( {news.fuente_nombre} )} {news.fecha && formatDistanceToNow(new Date(news.fecha), { addSuffix: true, locale: es })}

{news.title_translated || news.titulo}

{news.summary_translated || news.resumen}

View Original
{news.entities && news.entities.length > 0 && (

Entidades Mencionadas

{news.entities.map((ent: any) => ( {ent.image_path && ( (e.currentTarget.style.display = 'none')} /> )} {ent.valor} {ent.tipo} ))}
)}
) }