1
0
mirror of https://github.com/oceanprotocol/market.git synced 2024-12-02 05:57:29 +01:00
Matthias Kretschmann b1399bd579
network metadata updates
* move over b2330fdc99c847afb5065223f49d9d2dc8e610d1 (#980)
2022-01-11 09:59:44 +00:00

88 lines
2.3 KiB
TypeScript

import { networkDataGaiaX } from './constants'
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
): string {
let displayName
switch (networkId) {
case 137:
displayName = 'Polygon'
break
case 1287:
displayName = 'Moonbase Alpha'
break
case 1285:
displayName = 'Moonriver'
break
case 80001:
displayName = 'Polygon Mumbai'
break
case 8996:
displayName = 'Development'
break
case 3:
displayName = 'ETH Ropsten'
break
case 2021000:
displayName = 'GAIA-X Testnet'
break
default:
displayName = data
? `${data.chain} ${getNetworkType(data) === 'mainnet' ? '' : data.name}`
: 'Unknown'
break
}
return displayName
}
export function getNetworkDataById(
data: EthereumListsChain[],
networkId: number
): EthereumListsChain {
if (!networkId) return
const networkData = data.filter(
(chain: EthereumListsChain) => chain.chainId === networkId
)
return networkId === 2021000 ? networkDataGaiaX : networkData[0]
}
export function filterNetworksByType(
type: 'mainnet' | 'testnet',
chainIds: number[],
networksList: EthereumListsChain[]
): 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 === getNetworkType(networkData)
})
return finalNetworks
}