From b2330fdc99c847afb5065223f49d9d2dc8e610d1 Mon Sep 17 00:00:00 2001 From: claudiaHash <49017601+claudiaHash@users.noreply.github.com> Date: Mon, 10 Jan 2022 12:20:54 +0200 Subject: [PATCH] Network metadata updates on chainid.network (#980) * network field removed, build fixed * separation between main/test networks fix * network names fix * duplicate code removed, comment added * remove unnecessary check * name fix * console.log deleted Co-authored-by: ClaudiaHolhos --- .../UserPreferences/Networks/index.tsx | 19 +++++--------- src/hooks/useNetworkMetadata.ts | 3 ++- src/utils/web3.ts | 25 ++++++++++++++++++- 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/src/components/molecules/UserPreferences/Networks/index.tsx b/src/components/molecules/UserPreferences/Networks/index.tsx index 9e141bfc8..7e0c23bf8 100644 --- a/src/components/molecules/UserPreferences/Networks/index.tsx +++ b/src/components/molecules/UserPreferences/Networks/index.tsx @@ -2,7 +2,11 @@ import React, { ReactElement } from 'react' import Label from '../../../atoms/Input/Label' import { useSiteMetadata } from '../../../../hooks/useSiteMetadata' import FormHelp from '../../../atoms/Input/Help' -import { EthereumListsChain, getNetworkDataById } from '../../../../utils/web3' +import { + EthereumListsChain, + getNetworkDataById, + getNetworkType +} from '../../../../utils/web3' import Tooltip from '../../../atoms/Tooltip' import { ReactComponent as Caret } from '../../../../images/caret.svg' import { ReactComponent as Network } from '../../../../images/network.svg' @@ -19,18 +23,7 @@ export function filterNetworksByType( ): number[] { const finalNetworks = chainIds.filter((chainId: number) => { const networkData = getNetworkDataById(networksList, chainId) - - // HEADS UP! Only networkData.network === 'mainnet' is consistent - // while not every test network in the network data has 'testnet' - // in its place. So for the 'testnet' case filter for all non-'mainnet'. - // - // HEADS UP NO. 2! We hack in mainnet detection for moonriver as their - // network data uses the `network` key wrong over in - // https://github.com/ethereum-lists/chains/blob/master/_data/chains/eip155-1285.json - // - return type === 'mainnet' - ? networkData.network === type || networkData.network === 'moonriver' - : networkData.network !== 'mainnet' && networkData.network !== 'moonriver' + return type === getNetworkType(networkData) }) return finalNetworks } diff --git a/src/hooks/useNetworkMetadata.ts b/src/hooks/useNetworkMetadata.ts index 6e049382a..8614eb813 100644 --- a/src/hooks/useNetworkMetadata.ts +++ b/src/hooks/useNetworkMetadata.ts @@ -11,7 +11,8 @@ const networksQuery = graphql` edges { node { chain - network + name + title networkId chainId rpc diff --git a/src/utils/web3.ts b/src/utils/web3.ts index fee282a6f..367a9b223 100644 --- a/src/utils/web3.ts +++ b/src/utils/web3.ts @@ -3,6 +3,7 @@ import { getOceanConfig } from './ocean' export interface EthereumListsChain { name: string + title?: string chainId: number shortName: string chain: string @@ -49,6 +50,22 @@ export function accountTruncate(account: string): string { return truncated } +export function getNetworkType(network: EthereumListsChain): string { + // HEADS UP! Hack for getting network's type main/test, without using + // .network field, which is innexistent on https://chainid.network/chains.json + // We hack in mainnet detection for moonriver. + + if ( + !network.name.includes('Testnet') && + !network.title?.includes('Testnet') && + network.name !== 'Moonbase Alpha' + ) { + return 'mainnet' + } else { + return 'testnet' + } +} + export function getNetworkDisplayName( data: EthereumListsChain, networkId: number @@ -71,9 +88,15 @@ export function getNetworkDisplayName( case 8996: displayName = 'Development' break + case 3: + displayName = 'ETH Ropsten' + break + case 2021000: + displayName = 'GAIA-X Testnet' + break default: displayName = data - ? `${data.chain} ${data.network === 'mainnet' ? '' : data.network}` + ? `${data.chain} ${getNetworkType(data) === 'mainnet' ? '' : data.name}` : 'Unknown' break }