Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8be3fc9313 | ||
|
|
bcf8b55331 | ||
|
|
380b9ea508 |
@@ -37,6 +37,7 @@
|
|||||||
"node/no-callback-literal": 0,
|
"node/no-callback-literal": 0,
|
||||||
"prettier/prettier": ["error", { "printWidth": 130 }],
|
"prettier/prettier": ["error", { "printWidth": 130 }],
|
||||||
"jsx-quotes": ["error", "prefer-single"],
|
"jsx-quotes": ["error", "prefer-single"],
|
||||||
|
"@typescript-eslint/no-magic-numbers": ["error", { "ignoreArrayIndexes": true }],
|
||||||
"@typescript-eslint/restrict-template-expressions": ["warn", { "allowNumber": true }],
|
"@typescript-eslint/restrict-template-expressions": ["warn", { "allowNumber": true }],
|
||||||
"@typescript-eslint/explicit-function-return-type": 0,
|
"@typescript-eslint/explicit-function-return-type": 0,
|
||||||
"@typescript-eslint/array-type": 2,
|
"@typescript-eslint/array-type": 2,
|
||||||
@@ -47,7 +48,6 @@
|
|||||||
"@typescript-eslint/no-empty-interface": 2,
|
"@typescript-eslint/no-empty-interface": 2,
|
||||||
"@typescript-eslint/no-explicit-any": 2,
|
"@typescript-eslint/no-explicit-any": 2,
|
||||||
"@typescript-eslint/no-extra-non-null-assertion": 2,
|
"@typescript-eslint/no-extra-non-null-assertion": 2,
|
||||||
"@typescript-eslint/no-magic-numbers": 2,
|
|
||||||
"@typescript-eslint/no-require-imports": 2,
|
"@typescript-eslint/no-require-imports": 2,
|
||||||
"@typescript-eslint/require-await": 2,
|
"@typescript-eslint/require-await": 2,
|
||||||
"@typescript-eslint/no-floating-promises": 0,
|
"@typescript-eslint/no-floating-promises": 0,
|
||||||
|
|||||||
2
constants/graphs.ts
Normal file
2
constants/graphs.ts
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
export const RELAYER_GRAPH =
|
||||||
|
'https://gateway.thegraph.com/api/6a217817dd87d33db10beed79b044a91/subgraphs/id/DgKwfAbLfynpiq7fDJy59LDnVnia4Y5nYeRDBYi9qezc'
|
||||||
@@ -7,3 +7,4 @@ export * from './relayer'
|
|||||||
export * from './variables'
|
export * from './variables'
|
||||||
export * from './contracts'
|
export * from './contracts'
|
||||||
export * from './chainInfo'
|
export * from './chainInfo'
|
||||||
|
export * from './graphs'
|
||||||
|
|||||||
@@ -2,24 +2,26 @@ import { ChainId } from '@/types'
|
|||||||
|
|
||||||
import { getProvider } from '@/services'
|
import { getProvider } from '@/services'
|
||||||
|
|
||||||
|
import { RELAYER_GRAPH } from '@/constants'
|
||||||
|
|
||||||
async function getEnsOwner(ensName: string, chainId: ChainId) {
|
async function getEnsOwner(ensName: string, chainId: ChainId) {
|
||||||
try {
|
try {
|
||||||
const { provider } = getProvider(chainId)
|
const { provider } = getProvider(chainId)
|
||||||
const ownerAddress = await provider.resolveName(ensName)
|
const ownerAddress = await provider.resolveName(ensName)
|
||||||
|
|
||||||
return ownerAddress || undefined
|
return ownerAddress
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
return undefined
|
return undefined
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getNameFromHash(ensHash: string) {
|
async function getRelayerEnsName(ensHash: string) {
|
||||||
try {
|
try {
|
||||||
const response = await fetch('https://tornadocash-rpc.com/subgraphs/name/graphprotocol/ens', {
|
const response = await fetch(RELAYER_GRAPH, {
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
query: `{
|
query: `{
|
||||||
domain(id: "${ensHash}") {
|
relayers(first: 1, where: {ensHash: "${ensHash}"}){
|
||||||
name
|
ensName
|
||||||
}
|
}
|
||||||
}`,
|
}`,
|
||||||
}),
|
}),
|
||||||
@@ -28,9 +30,12 @@ async function getNameFromHash(ensHash: string) {
|
|||||||
|
|
||||||
const { data } = await response.json()
|
const { data } = await response.json()
|
||||||
|
|
||||||
return data.domain.name
|
if (!data.relayers.length) throw new Error('ens hash does not belong to relayer')
|
||||||
|
|
||||||
|
return data.relayers[0].ensName
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
throw new Error(err.message)
|
throw new Error(err.message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
export { getEnsOwner, getNameFromHash }
|
|
||||||
|
export { getEnsOwner, getRelayerEnsName }
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { checkSubdomains, subdomains } from './ensSubdomains'
|
import { checkSubdomains, subdomains } from './ensSubdomains'
|
||||||
import { getEnsOwner, getNameFromHash } from './ens'
|
import { getEnsOwner, getRelayerEnsName } from './ens'
|
||||||
|
|
||||||
export const ensService = {
|
export const ensService = {
|
||||||
subdomains,
|
subdomains,
|
||||||
getEnsOwner,
|
getEnsOwner,
|
||||||
checkSubdomains,
|
checkSubdomains,
|
||||||
getNameFromHash,
|
getRelayerEnsName,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ export const actions: ActionTree<RelayerState, RootState> = {
|
|||||||
try {
|
try {
|
||||||
const { chainId } = getters.dependencies
|
const { chainId } = getters.dependencies
|
||||||
|
|
||||||
const ensName = await ensService.getNameFromHash(ensHash)
|
const ensName = await ensService.getRelayerEnsName(ensHash)
|
||||||
const subdomains = await ensService.checkSubdomains(ensName, chainId)
|
const subdomains = await ensService.checkSubdomains(ensName, chainId)
|
||||||
|
|
||||||
const mainnetSubdomain = subdomains.find((el) => el.chainId === ChainId.MAINNET)
|
const mainnetSubdomain = subdomains.find((el) => el.chainId === ChainId.MAINNET)
|
||||||
|
|||||||
Reference in New Issue
Block a user