Skip to content
This repository was archived by the owner on Mar 5, 2025. It is now read-only.

Commit 962b99f

Browse files
authored
6992 getText update and getName fix (#7047)
* getText with address as input * reverse resolution support * changelog update * fix * lint fix * name update * updated getname test
1 parent 692987a commit 962b99f

File tree

4 files changed

+31
-11
lines changed

4 files changed

+31
-11
lines changed

packages/web3-eth-ens/CHANGELOG.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,4 +159,13 @@ Documentation:
159159

160160
- `defaultReturnFormat` was added to all methods that have `ReturnType` param. (#6947)
161161

162-
## [Unreleased]
162+
## [Unreleased]
163+
164+
### Added
165+
166+
- `getText` now supports first param Address
167+
- `getName` has optional second param checkInterfaceSupport
168+
169+
### Fixed
170+
171+
- `getName` reverse resolution

packages/web3-eth-ens/src/ens.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import {
3333
TransactionReceipt,
3434
Web3NetAPI,
3535
} from 'web3-types';
36+
import { isAddress } from 'web3-validator';
3637
import { PublicResolverAbi } from './abi/ens/PublicResolver.js';
3738
import { networkIds, registryAddresses } from './config.js';
3839
import { Registry } from './registry.js';
@@ -174,17 +175,19 @@ export class ENS extends Web3Context<EthExecutionAPI & Web3NetAPI> {
174175
* @param key - The key to resolve https://github.com/ethereum/ercs/blob/master/ERCS/erc-634.md#global-keys
175176
* @returns - The value content stored in the resolver for the specified key
176177
*/
177-
public async getText(ENSName: string, key: string): Promise<string> {
178-
return this._resolver.getText(ENSName, key);
178+
public async getText(ENSNameOrAddr: string | Address, key: string): Promise<string> {
179+
if(isAddress(ENSNameOrAddr))
180+
return this._resolver.getText(await(this._resolver.getName(ENSNameOrAddr,false)), key);
181+
return this._resolver.getText(ENSNameOrAddr, key);
179182
}
180183

181184
/**
182185
* Resolves the name of an ENS node.
183186
* @param ENSName - The node to resolve
184187
* @returns - The name
185188
*/
186-
public async getName(ENSName: string): Promise<string> {
187-
return this._resolver.getName(ENSName);
189+
public async getName(ENSName: string, checkInterfaceSupport = true): Promise<string> {
190+
return this._resolver.getName(ENSName, checkInterfaceSupport);
188191
}
189192

190193
/**

packages/web3-eth-ens/src/resolver.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,12 +130,17 @@ export class Resolver {
130130
}
131131

132132
public async getName(
133-
address: string
133+
address: string,
134+
checkInterfaceSupport = true
134135
) {
135-
const resolverContract = await this.getResolverContractAdapter(address);
136-
await this.checkInterfaceSupport(resolverContract, methodsInInterface.name);
136+
const reverseName = `${address.toLowerCase().substring(2)}.addr.reverse`;
137137

138+
const resolverContract = await this.getResolverContractAdapter(reverseName);
139+
140+
if(checkInterfaceSupport)
141+
await this.checkInterfaceSupport(resolverContract, methodsInInterface.name);
142+
138143
return resolverContract.methods
139-
.name(namehash(address)).call()
144+
.name(namehash(reverseName)).call()
140145
}
141146
}

packages/web3-eth-ens/test/unit/resolver.test.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,8 @@ describe('resolver', () => {
239239

240240
describe('name', () => {
241241
it('getName', async () => {
242+
const address = "0x314159265dd8dbb310642f98f50c066173c1259b";
243+
242244
const supportsInterfaceMock = jest
243245
.spyOn(contract.methods, 'supportsInterface')
244246
.mockReturnValue({
@@ -255,12 +257,13 @@ describe('resolver', () => {
255257
});
256258
});
257259

258-
await resolver.getName(ENS_NAME);
260+
await resolver.getName(address);
259261
expect(supportsInterfaceMock).toHaveBeenCalledWith(
260262
interfaceIds[methodsInInterface.name],
261263
);
262264

263-
expect(nameMock).toHaveBeenCalledWith(namehash(ENS_NAME));
265+
const reverseName = `${address.toLowerCase().substring(2)}.addr.reverse`;
266+
expect(nameMock).toHaveBeenCalledWith(namehash(reverseName));
264267
})
265268
})
266269

0 commit comments

Comments
 (0)