Commit 5b7a80d1 authored by yj's avatar yj Committed by GitHub

fix: Add ENSName and address check to Web3Status (#3040)

* Add ENSName and address check to Web3Status

Issue #2838

* Update useENSName.ts

Do the forward ENSAddress check in useENSName

* Update index.tsx

Revert ENSAddress check, which has been moved into ENSName hook

* Update useENSName.ts

Correcting the equality check (was testing that things work, and made a wrong commit)

* add comment, change var names
Co-authored-by: default avatarTina Zheng <tina.s.zheng+github@gmail.com>
parent db8dab45
...@@ -6,6 +6,7 @@ import { isAddress } from '../utils' ...@@ -6,6 +6,7 @@ import { isAddress } from '../utils'
import isZero from '../utils/isZero' import isZero from '../utils/isZero'
import { useENSRegistrarContract, useENSResolverContract } from './useContract' import { useENSRegistrarContract, useENSResolverContract } from './useContract'
import useDebounce from './useDebounce' import useDebounce from './useDebounce'
import useENSAddress from './useENSAddress'
/** /**
* Does a reverse lookup for an address to find its ENS name. * Does a reverse lookup for an address to find its ENS name.
...@@ -24,14 +25,22 @@ export default function useENSName(address?: string): { ENSName: string | null; ...@@ -24,14 +25,22 @@ export default function useENSName(address?: string): { ENSName: string | null;
resolverAddressResult && !isZero(resolverAddressResult) ? resolverAddressResult : undefined, resolverAddressResult && !isZero(resolverAddressResult) ? resolverAddressResult : undefined,
false false
) )
const name = useSingleCallResult(resolverContract, 'name', ensNodeArgument) const nameCallRes = useSingleCallResult(resolverContract, 'name', ensNodeArgument)
const name = nameCallRes.result?.[0]
/* ENS does not enforce that an address owns a .eth domain before setting it as a reverse proxy
and recommends that you perform a match on the forward resolution
see: https://docs.ens.domains/dapp-developer-guide/resolving-names#reverse-resolution
*/
const fwdAddr = useENSAddress(name)
const checkedName = address === fwdAddr?.address ? name : null
const changed = debouncedAddress !== address const changed = debouncedAddress !== address
return useMemo( return useMemo(
() => ({ () => ({
ENSName: changed ? null : name.result?.[0] ?? null, ENSName: changed ? null : checkedName,
loading: changed || resolverAddress.loading || name.loading, loading: changed || resolverAddress.loading || nameCallRes.loading,
}), }),
[changed, name.loading, name.result, resolverAddress.loading] [changed, nameCallRes.loading, checkedName, resolverAddress.loading]
) )
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment