From 5b7a80d10d44886e903ff89f2c54c970d65bc9e6 Mon Sep 17 00:00:00 2001 From: yj <84749041+uniyj@users.noreply.github.com> Date: Thu, 30 Dec 2021 12:04:09 +0800 Subject: [PATCH] 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: Tina Zheng --- src/hooks/useENSName.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/hooks/useENSName.ts b/src/hooks/useENSName.ts index 97a140d7ab9..3d4ac2b007e 100644 --- a/src/hooks/useENSName.ts +++ b/src/hooks/useENSName.ts @@ -6,6 +6,7 @@ import { isAddress } from '../utils' import isZero from '../utils/isZero' import { useENSRegistrarContract, useENSResolverContract } from './useContract' import useDebounce from './useDebounce' +import useENSAddress from './useENSAddress' /** * 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; resolverAddressResult && !isZero(resolverAddressResult) ? resolverAddressResult : undefined, 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 return useMemo( () => ({ - ENSName: changed ? null : name.result?.[0] ?? null, - loading: changed || resolverAddress.loading || name.loading, + ENSName: changed ? null : checkedName, + loading: changed || resolverAddress.loading || nameCallRes.loading, }), - [changed, name.loading, name.result, resolverAddress.loading] + [changed, nameCallRes.loading, checkedName, resolverAddress.loading] ) }