import { useEffect } from 'react'; import { useQuery } from '@tanstack/react-query'; import { X, RefreshCw, AlertCircle, ExternalLink, FileText } from 'lucide-react'; import { firmwareApi } from '../services/api'; /** * Shows MikroTik's official release notes for a RouterOS version, fetched * through the backend proxy (released changelogs are immutable, so results * are cached client- and server-side). Falls back to an external link when * the changelog can't be fetched. */ export default function ChangelogModal({ version, onClose }: { version: string; onClose: () => void }) { const { data, isLoading, error } = useQuery({ queryKey: ['firmware-changelog', version], queryFn: () => firmwareApi.changelog(version).then(r => r.data), staleTime: Infinity, retry: 1, }); const fallbackUrl = `https://download.mikrotik.com/routeros/${encodeURIComponent(version)}/CHANGELOG`; useEffect(() => { const onKey = (e: KeyboardEvent) => { if (e.key === 'Escape') onClose(); }; window.addEventListener('keydown', onKey); return () => window.removeEventListener('keydown', onKey); }, [onClose]); return (
{data.text}
)}