import { useState, useEffect } from 'react'; import { authenticatedFetch } from '../../utils/api'; type Props = { pluginName: string; iconFile: string; className?: string; }; // Module-level cache so repeated renders don't re-fetch const svgCache = new Map(); export default function PluginIcon({ pluginName, iconFile, className }: Props) { const url = `/api/plugins/${encodeURIComponent(pluginName)}/assets/${encodeURIComponent(iconFile)}`; const [svg, setSvg] = useState(svgCache.get(url) ?? null); useEffect(() => { if (svgCache.has(url)) return; authenticatedFetch(url) .then((r) => r.text()) .then((text) => { if (text.trimStart().startsWith(' {}); }, [url]); if (!svg) return ; return ( ); }