forked from tornadocash/relayers-network-ui
42 lines
954 B
TypeScript
42 lines
954 B
TypeScript
import { ChainId } from '@/types'
|
|
|
|
import { getProvider } from '@/services'
|
|
|
|
import { RELAYER_GRAPH } from '@/constants'
|
|
|
|
async function getEnsOwner(ensName: string, chainId: ChainId) {
|
|
try {
|
|
const { provider } = getProvider(chainId)
|
|
const ownerAddress = await provider.resolveName(ensName)
|
|
|
|
return ownerAddress
|
|
} catch (err) {
|
|
return undefined
|
|
}
|
|
}
|
|
|
|
async function getRelayerEnsName(ensHash: string) {
|
|
try {
|
|
const response = await fetch(RELAYER_GRAPH, {
|
|
body: JSON.stringify({
|
|
query: `{
|
|
relayers(first: 1, where: {ensHash: "${ensHash}"}){
|
|
ensName
|
|
}
|
|
}`,
|
|
}),
|
|
method: 'POST',
|
|
})
|
|
|
|
const { data } = await response.json()
|
|
|
|
if (!data.relayers.length) throw new Error('ens hash does not belong to relayer')
|
|
|
|
return data.relayers[0].ensName
|
|
} catch (err) {
|
|
throw new Error(err.message)
|
|
}
|
|
}
|
|
|
|
export { getEnsOwner, getRelayerEnsName }
|