perf: preload stargazer avatars for instant Stargazers panel

This commit is contained in:
phranck
2026-02-04 21:57:19 +01:00
parent c891e6ca6e
commit e9cea4b2bf
+17
View File
@@ -25,6 +25,23 @@ export default function DashboardPage() {
const { refresh, ...stats } = useGitHubStats();
const [showStargazers, setShowStargazers] = useState(false);
// Preload stargazer avatar images in background so the panel opens instantly
useEffect(() => {
if (!stats.stargazers || stats.stargazers.length === 0) return;
const head = document.head || document.getElementsByTagName('head')[0];
const existing = new Set(Array.from(head.querySelectorAll('link[rel="preload"][as="image"]')).map((l) => (l as HTMLLinkElement).href));
stats.stargazers.slice(0, 100).forEach((s) => {
const url = s.avatarUrl + '&s=128';
if (existing.has(url)) return;
const link = document.createElement('link');
link.rel = 'preload';
link.as = 'image';
link.href = url;
head.appendChild(link);
});
}, [stats.stargazers]);
const toggleStargazers = useCallback(() => setShowStargazers((prev) => !prev), []);
const closeStargazers = useCallback(() => setShowStargazers(false), []);