|
| 1 | +import { Provider } from '@remix-ui/environment-explorer' |
| 2 | +import { CustomTooltip } from '@remix-ui/helper' |
| 3 | +import React, { useEffect, useState } from 'react' |
| 4 | +import { FormattedMessage } from 'react-intl' |
| 5 | +import { RunTabState } from '../types' |
| 6 | +import { current } from '@reduxjs/toolkit' |
| 7 | + |
| 8 | +export function DropdownLabel({ label, bridges, currentProvider, chainId, runTabState }: { label: string, bridges: any, currentProvider: any, chainId: string, runTabState: RunTabState }) { |
| 9 | + |
| 10 | + const [renderLabel, setRenderLabel] = useState(label) |
| 11 | + |
| 12 | + const selectedEnvs = [ |
| 13 | + { name: 'Remix VM (Cancun)', value: 'vm-cancun', chainId: 'vm-cancun' }, |
| 14 | + { name: 'Gnosis Mainnet - MetaMask', value: 'injected-metamask-gnosis', chainId: 100 }, |
| 15 | + { name: 'L2 - Optimism - MetaMask', value: 'injected-metamask-optimism', chainId: 10 }, |
| 16 | + { name: 'L2 - Arbitrum - MetaMask', value: 'injected-metamask-arbitrum', chainId: 42161 }, |
| 17 | + { name: 'Ephemery Testnet - MetaMask', value: 'injected-metamask-ephemery', chainId: 39438143 }, |
| 18 | + { name: 'Sepolia Testnet - MetaMask', value: 'injected-metamask-sepolia', chainId: 11155111 }, |
| 19 | + { name: 'L2 - Linea - MetaMask', value: 'injected-metamask-linea', chainId: 59144 }, |
| 20 | + { name: 'Injected Provider - MetaMask', value: 'injected-MetaMask' }, |
| 21 | + { name: 'WalletConnect', value: 'walletconnect' }, |
| 22 | + { name: 'Remix VM - Mainnet fork', value: 'vm-mainnet-fork', chainId: 'vm-mainnet-fork' }, |
| 23 | + { name: 'Remix VM - Sepolia fork', value: 'vm-sepolia-fork', chainId: 'vm-sepolia-fork' }, |
| 24 | + { name: 'Remix VM - Custom fork', value: 'vm-custom-fork', chainId: 'vm-custom-fork' }, |
| 25 | + { name: 'Remix VM (Shanghai)', value: 'vm-shanghai', chainId: 'vm-shanghai' }, |
| 26 | + { name: 'Remix VM (Paris)', value: 'vm-paris', chainId: 'vm-paris' }, |
| 27 | + { name: 'Remix VM (London)', value: 'vm-london', chainId: 'vm-london' }, |
| 28 | + { name: 'Remix VM (Berlin)', value: 'vm-berlin', chainId: 'vm-berlin' }, |
| 29 | + { name: 'Custom - External Http Provider', value: 'basic-http-provider', chainId: 1741104841094 }, |
| 30 | + { name: 'Dev - Hardhat Provider', value: 'hardhat-provider', chainId: 31337 }, |
| 31 | + { name: 'Dev - Foundry Provider', value: 'foundry-provider', chainId: 31337 }, |
| 32 | + { name: 'Dev - Ganache Provider', value: 'ganache-provider', chainId: 1741104841094 }, |
| 33 | + ] |
| 34 | + |
| 35 | + useEffect(() => { |
| 36 | + const selectedEnv = selectedEnvs.find(env => (env.chainId === chainId && env.value === runTabState.selectExEnv) || (env.value === 'walletconnect' && env.value === currentProvider?.name) || env.chainId === chainId) |
| 37 | + if (selectedEnv) { |
| 38 | + setRenderLabel(selectedEnv.name) |
| 39 | + } else { |
| 40 | + setRenderLabel('Injected Provider - MetaMask') |
| 41 | + } |
| 42 | + }, [chainId]) |
| 43 | + |
| 44 | + return ( |
| 45 | + <> |
| 46 | + <span>{renderLabel}</span> |
| 47 | + {currentProvider && bridges[currentProvider.displayName.substring(0, 13)] && ( |
| 48 | + <CustomTooltip placement={'auto-end'} tooltipClasses="text-nowrap" tooltipId="info-recorder" tooltipText={<FormattedMessage id="udapp.tooltipText3" />}> |
| 49 | + <i |
| 50 | + style={{ fontSize: 'medium' }} |
| 51 | + className={'ml-1 fa fa-rocket-launch'} |
| 52 | + aria-hidden="true" |
| 53 | + onClick={() => { |
| 54 | + window.open(bridges[currentProvider.displayName.substring(0, 13)], '_blank') |
| 55 | + }} |
| 56 | + ></i> |
| 57 | + </CustomTooltip> |
| 58 | + )} |
| 59 | + </> |
| 60 | + ) |
| 61 | +} |
0 commit comments