diff --git a/src/web/src/Avatar.jsx b/src/web/src/Avatar.jsx index 1949a320..067fd493 100644 --- a/src/web/src/Avatar.jsx +++ b/src/web/src/Avatar.jsx @@ -8,16 +8,33 @@ import { client, chains, getProvider } from "./client.mjs"; import { fetchKarma } from "./API.mjs"; export const resolveAvatar = async (address) => { - if (!address) return; + if (!address) return null; - const provider = getProvider({ chainId: 1 }); - const name = await provider.lookupAddress(address); - if (!name) return; + try { + const res = await fetch( + `https://api.ensdata.net/${address}?farcaster=true`, + ); + if (!res.ok) return null; + + const data = await res.json(); + if (!data) return null; - const ensResolver = await provider.getResolver(name); - if (!ensResolver) return; + let safeAvatar = data.avatar_small || data.avatar; + if (safeAvatar && !safeAvatar.startsWith("https")) { + safeAvatar = data.avatar_url; + } + if (!safeAvatar && data?.farcaster?.avatar) { + safeAvatar = data.farcaster.avatar; + } + if (!safeAvatar && data?.lensProfile?.avatar) { + safeAvatar = data.lensProfile.avatar; + } - return (await ensResolver.getAvatar())?.url; + return safeAvatar || null; + } catch (err) { + console.error("Avatar resolution failed:", err); + return null; + } }; const Avatar = (props) => { diff --git a/src/web/src/main.jsx b/src/web/src/main.jsx index 2ea85506..54b2f863 100644 --- a/src/web/src/main.jsx +++ b/src/web/src/main.jsx @@ -631,10 +631,12 @@ async function startWatchAccount(allowlist, delegations) { } else if (account.isConnected) { address = account.address; } - const isEligible = address && eligible(allowlist, delegations, address); - if (!isEligible) { + const identity = address && eligible(allowlist, delegations, address); + if (!identity) { hideDesktopLinks(); + return; } + dynamicPrefetch(`https://api.ensdata.net/${identity}?farcaster=true`); } function hideDesktopLinks() {