import { useEffect, useState } from 'react'; import { ipcChannels } from '../../../shared/ipc/contracts'; import type { PlayerId } from '../../../shared/types'; import { getDndApi } from '../dndApi'; export function usePlayerImageUrl(playerId: PlayerId | null | undefined): string | null { const api = getDndApi(); const [url, setUrl] = useState(null); useEffect(() => { if (!playerId) { setUrl(null); return; } let cancelled = false; void api.invoke(ipcChannels.players.imageUrl, { id: playerId }).then((res) => { if (!cancelled) setUrl(res.url); }); return () => { cancelled = true; }; }, [api, playerId]); return url; }