mirror of
https://github.com/oceanprotocol/market.git
synced 2024-12-02 05:57:29 +01:00
88 lines
2.3 KiB
TypeScript
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
|
|
}
|