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 (
e.stopPropagation()} > {/* Header */}

What's new in RouterOS {version}

{/* Body */}
{isLoading ? (
Fetching release notes from MikroTik…
) : error || !data ? (

Couldn't load the changelog for {version}.

Open it on mikrotik.com
) : (
              {data.text}
            
)}
{/* Footer */}
Open on mikrotik.com
); }