Adds types in getWeb3.ts
This commit is contained in:
parent
8fb5cf5e63
commit
8fd252d1a7
|
@ -4,6 +4,8 @@ import { sameAddress } from './ethAddresses'
|
||||||
import { EMPTY_DATA } from './ethTransactions'
|
import { EMPTY_DATA } from './ethTransactions'
|
||||||
|
|
||||||
import { getNetwork } from '../../config'
|
import { getNetwork } from '../../config'
|
||||||
|
import { ContentHash } from 'web3-eth-ens'
|
||||||
|
import { provider as Provider } from 'web3-core'
|
||||||
|
|
||||||
export const ETHEREUM_NETWORK = {
|
export const ETHEREUM_NETWORK = {
|
||||||
MAINNET: 'MAINNET',
|
MAINNET: 'MAINNET',
|
||||||
|
@ -46,14 +48,14 @@ export const ETHEREUM_NETWORK_IDS = {
|
||||||
42: ETHEREUM_NETWORK.KOVAN,
|
42: ETHEREUM_NETWORK.KOVAN,
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getEtherScanLink = (type, value) => {
|
export const getEtherScanLink = (type: string, value: string): string => {
|
||||||
const network = getNetwork()
|
const network = getNetwork()
|
||||||
return `https://${
|
return `https://${
|
||||||
network.toLowerCase() === 'mainnet' ? '' : `${network.toLowerCase()}.`
|
network.toLowerCase() === 'mainnet' ? '' : `${network.toLowerCase()}.`
|
||||||
}etherscan.io/${type}/${value}`
|
}etherscan.io/${type}/${value}`
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getInfuraUrl = () => {
|
export const getInfuraUrl = (): string => {
|
||||||
const isMainnet = process.env.REACT_APP_NETWORK === 'mainnet'
|
const isMainnet = process.env.REACT_APP_NETWORK === 'mainnet'
|
||||||
|
|
||||||
return `https://${isMainnet ? 'mainnet' : 'rinkeby'}.infura.io:443/v3/${process.env.REACT_APP_INFURA_TOKEN}`
|
return `https://${isMainnet ? 'mainnet' : 'rinkeby'}.infura.io:443/v3/${process.env.REACT_APP_INFURA_TOKEN}`
|
||||||
|
@ -73,7 +75,7 @@ export const resetWeb3 = (): void => {
|
||||||
web3 = web3ReadOnly
|
web3 = web3ReadOnly
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getAccountFrom = async (web3Provider) => {
|
export const getAccountFrom = async (web3Provider: Web3): Promise<string | null> => {
|
||||||
const accounts = await web3Provider.eth.getAccounts()
|
const accounts = await web3Provider.eth.getAccounts()
|
||||||
|
|
||||||
if (process.env.NODE_ENV === 'test' && window.testAccountIndex) {
|
if (process.env.NODE_ENV === 'test' && window.testAccountIndex) {
|
||||||
|
@ -83,20 +85,32 @@ export const getAccountFrom = async (web3Provider) => {
|
||||||
return accounts && accounts.length > 0 ? accounts[0] : null
|
return accounts && accounts.length > 0 ? accounts[0] : null
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getNetworkIdFrom = (web3Provider) => web3Provider.eth.net.getId()
|
export const getNetworkIdFrom = (web3Provider: Web3): Promise<number> => web3Provider.eth.net.getId()
|
||||||
|
|
||||||
const isHardwareWallet = (walletName) =>
|
const isHardwareWallet = (walletName: string) =>
|
||||||
sameAddress(WALLET_PROVIDER.LEDGER, walletName) || sameAddress(WALLET_PROVIDER.TREZOR, walletName)
|
sameAddress(WALLET_PROVIDER.LEDGER, walletName) || sameAddress(WALLET_PROVIDER.TREZOR, walletName)
|
||||||
|
|
||||||
const isSmartContractWallet = async (web3Provider, account) => {
|
const isSmartContractWallet = async (web3Provider: Web3, account) => {
|
||||||
const contractCode = await web3Provider.eth.getCode(account)
|
const contractCode = await web3Provider.eth.getCode(account)
|
||||||
|
|
||||||
return contractCode.replace(EMPTY_DATA, '').replace(/0/g, '') !== ''
|
return contractCode.replace(EMPTY_DATA, '').replace(/0/g, '') !== ''
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getProviderInfo = async (web3Provider, providerName = 'Wallet') => {
|
type ProviderInfo = {
|
||||||
web3 = new Web3(web3Provider)
|
name: string
|
||||||
|
available: boolean
|
||||||
|
loaded: boolean
|
||||||
|
account: string
|
||||||
|
network: number
|
||||||
|
smartContractWallet: boolean
|
||||||
|
hardwareWallet: boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getProviderInfo = async (
|
||||||
|
web3Provider: string | Provider,
|
||||||
|
providerName = 'Wallet',
|
||||||
|
): Promise<ProviderInfo> => {
|
||||||
|
web3 = new Web3(web3Provider)
|
||||||
const account = await getAccountFrom(web3)
|
const account = await getAccountFrom(web3)
|
||||||
const network = await getNetworkIdFrom(web3)
|
const network = await getNetworkIdFrom(web3)
|
||||||
const smartContractWallet = await isSmartContractWallet(web3, account)
|
const smartContractWallet = await isSmartContractWallet(web3, account)
|
||||||
|
@ -115,15 +129,15 @@ export const getProviderInfo = async (web3Provider, providerName = 'Wallet') =>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getAddressFromENS = (name: string) => web3.eth.ens.getAddress(name)
|
export const getAddressFromENS = (name: string): Promise<string> => web3.eth.ens.getAddress(name)
|
||||||
|
|
||||||
export const getContentFromENS = (name: string) => web3.eth.ens.getContenthash(name)
|
export const getContentFromENS = (name: string): Promise<ContentHash> => web3.eth.ens.getContenthash(name)
|
||||||
|
|
||||||
export const setWeb3 = (provider) => {
|
export const setWeb3 = (provider: Provider): void => {
|
||||||
web3 = new Web3(provider)
|
web3 = new Web3(provider)
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getBalanceInEtherOf = async (safeAddress) => {
|
export const getBalanceInEtherOf = async (safeAddress: string): Promise<string> => {
|
||||||
if (!web3) {
|
if (!web3) {
|
||||||
return '0'
|
return '0'
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue