UNPKG

@iandjx/wallet

Version:

Implmentation of web3react-v8 for RT widgets

1 lines 25.9 kB
{"version":3,"sources":["../src/index.ts","../src/hooks/useWallets.ts","../src/context/WalletProvider.tsx","../src/connection/connectors.ts","../src/chains.ts","../src/connection/utils.ts","../src/hooks/useOrderedConnections.ts"],"sourcesContent":["export * from '@web3-react/core'\nexport * from './hooks/useWallets'\nexport * from './chains'\nexport * from './connection/connectors'\nexport * from './context/WalletProvider'\nexport * from './connection/utils'\n","import { useContext } from 'react'\nimport { WalletContext } from '../context/WalletProvider'\n\nexport function useWallets() {\n const context = useContext(WalletContext)\n if (context === undefined) {\n throw new Error('useWallet must be used within a useWalletsProvider')\n }\n return context\n}\n","import { useWeb3React, Web3ReactHooks, Web3ReactProvider } from '@web3-react/core'\nimport React, { useEffect, useState, ReactNode, useMemo } from 'react'\nimport { AddEthereumChainParameter, Connector } from '@web3-react/types'\nimport { ethers } from 'ethers'\nimport { RomeEventType, widgetBridge } from '@romeblockchain/bridge'\nimport bannedAccounts from '../../src/bannedAccounts.json'\nimport { Connection, ConnectionType, networkConnection } from '../connection/connectors'\nimport { getConnectionName } from '../connection/utils'\nimport useOrderedConnections from '../hooks/useOrderedConnections'\n\nexport interface IWalletContext {\n setSelectedWallet: (ConnectionType: undefined) => void\n selectedWallet: ConnectionType | undefined\n handleConnect: (connection: Connection, chainParams?: AddEthereumChainParameter) => Promise<void>\n loading: boolean\n}\n\nexport const WalletContext = React.createContext<IWalletContext>({\n setSelectedWallet: () => {},\n selectedWallet: undefined,\n handleConnect: async () => {},\n loading: false,\n})\n\nconst OfacBan = ({ children }: any) => {\n const { account } = useWeb3React()\n const ofacBanned = account && bannedAccounts.includes(account.toLowerCase())\n if (ofacBanned) {\n return (\n <div\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n }}\n >\n <div\n style={{\n padding: '1.25rem',\n backgroundColor: '#991b1b',\n borderRadius: '0.375rem',\n }}\n >\n <p\n style={{\n marginBottom: '0.75rem',\n fontSize: 'large',\n }}\n >\n Blocked Address\n </p>\n <p>This address is blocked because it is associated with banned activities.</p>\n </div>\n </div>\n )\n }\n return children\n}\n\nexport const WalletProvider = ({ children, connectToNetwork }: { children: ReactNode; connectToNetwork?: boolean }) => {\n const [selectedWallet, setSelectedWallet] = useState<ConnectionType>()\n const [loading, setLoading] = useState(false)\n\n const connections = useOrderedConnections(selectedWallet)\n\n const handleConnect = async (connection: Connection, chainParams?: AddEthereumChainParameter) => {\n const chainIdInput = chainParams && chainParams.chainId\n const chainIdInputHex = chainIdInput && ethers.utils.hexValue(chainIdInput)\n const { connector } = connection\n\n setLoading(true)\n\n try {\n // error would return true if user rejects the wallet connection request\n // if network doesnt exist yet connector.activate would not throw an error and still successsfully activate\n await connector.activate(chainIdInput)\n // activate needs to occur before wallet_addEthereumChain because we can only make requests with an active\n // connector.\n console.log(connector.provider, 'provider')\n // only trigger addethereumchain and switchethereumchain for wallet connect connector\n // calling wallet_addEthereumChain will check if the chainId is already present in the wallet\n // if the chainId alreaady exists then it wont add the duplicate network to the wallet\n await connector.provider?.request({\n method: 'wallet_addEthereumChain',\n params: [\n {\n ...chainParams,\n chainId: chainIdInputHex,\n },\n ],\n })\n\n await connector.provider?.request({\n method: 'wallet_switchEthereumChain',\n params: [\n {\n chainId: chainIdInputHex,\n },\n ],\n })\n\n const accounts =\n connector.provider &&\n ((await connector.provider.request({\n method: 'eth_requestAccounts',\n })) as string[])\n\n widgetBridge &&\n accounts &&\n widgetBridge.sendWalletConnectEvent(RomeEventType.WIDGET_WALLET_CONNECT_EVENT, {\n address: accounts[0],\n wallet: ConnectionType as any,\n })\n } catch (error: any) {\n throw new Error('Unable to connect to wallet. error:', error)\n }\n\n setLoading(false)\n }\n\n useEffect(() => {\n if (!selectedWallet && widgetBridge) {\n widgetBridge.sendWalletDisconnectEvent(RomeEventType.WIDGET_WALLET_DISCONNECT_EVENT)\n }\n }, [selectedWallet])\n\n useEffect(() => {\n if (connectToNetwork) {\n networkConnection.connector.activate()\n }\n }, [connectToNetwork])\n\n const key = useMemo(() => connections.map(({ type }: Connection) => getConnectionName(type)).join('-'), [connections])\n\n const connectors: [Connector, Web3ReactHooks][] = connections.map(({ hooks, connector }) => [connector, hooks])\n return (\n <Web3ReactProvider connectors={connectors} key={key}>\n <WalletContext.Provider value={{ selectedWallet, setSelectedWallet, handleConnect, loading }}>\n <OfacBan>{children}</OfacBan>\n </WalletContext.Provider>\n </Web3ReactProvider>\n )\n}\n","import { CoinbaseWallet } from '@web3-react/coinbase-wallet'\nimport { initializeConnector, Web3ReactHooks } from '@web3-react/core'\nimport { MetaMask } from '@web3-react/metamask'\nimport { Network } from '@web3-react/network'\nimport { Connector } from '@web3-react/types'\nimport { WalletConnect } from '@web3-react/walletconnect'\nimport { URLS } from '../chains'\n\nexport enum ConnectionType {\n INJECTED = 'INJECTED',\n COINBASE_WALLET = 'COINBASE_WALLET',\n WALLET_CONNECT = 'WALLET_CONNECT',\n NETWORK = 'NETWORK',\n GNOSIS_SAFE = 'GNOSIS_SAFE',\n}\n\nexport interface Connection {\n connector: Connector\n hooks: Web3ReactHooks\n type: ConnectionType\n}\n\nfunction onError(error: Error) {\n console.debug(`web3-react error: ${error}`)\n}\n\nconst [web3Network, web3NetworkHooks] = initializeConnector<Network>(\n (actions) =>\n new Network({\n actions,\n urlMap: URLS,\n defaultChainId: 1,\n }),\n)\nexport const networkConnection: Connection = {\n connector: web3Network,\n hooks: web3NetworkHooks,\n type: ConnectionType.NETWORK,\n}\n\nconst [web3Injected, web3InjectedHooks] = initializeConnector<MetaMask>((actions) => new MetaMask({ actions, onError }))\nexport const injectedConnection: Connection = {\n connector: web3Injected,\n hooks: web3InjectedHooks,\n type: ConnectionType.INJECTED,\n}\n\nconst [web3WalletConnect, web3WalletConnectHooks] = initializeConnector<WalletConnect>((actions) => {\n return new WalletConnect({\n actions,\n options: {\n rpc: URLS,\n qrcode: true,\n },\n onError,\n })\n})\nexport const walletConnectConnection: Connection = {\n connector: web3WalletConnect,\n hooks: web3WalletConnectHooks,\n type: ConnectionType.WALLET_CONNECT,\n}\n\nconst [web3CoinbaseWallet, web3CoinbaseWalletHooks] = initializeConnector<CoinbaseWallet>(\n (actions) =>\n new CoinbaseWallet({\n actions,\n options: {\n url: URLS[1][0],\n appName: 'RBL',\n appLogoUrl: 'https://app.benqi.fi/favicon.svg',\n reloadOnDisconnect: false,\n },\n onError,\n }),\n)\nexport const coinbaseWalletConnection: Connection = {\n connector: web3CoinbaseWallet,\n hooks: web3CoinbaseWalletHooks,\n type: ConnectionType.COINBASE_WALLET,\n}\n\nexport const ConnectionList: Connection[] = [injectedConnection, coinbaseWalletConnection, walletConnectConnection]\n","import type { AddEthereumChainParameter } from '@web3-react/types'\n\nconst INFURA_KEY = process.env.REACT_APP_INFURA_KEY ? process.env.REACT_APP_INFURA_KEY : process.env.INFURA_KEY\n\nconst ALCHEMY_KEY = process.env.REACT_APP_ALCHEMY_KEY ? process.env.REACT_APP_ALCHEMY_KEY : process.env.ALCHEMY_KEY\n\nconst ETH: AddEthereumChainParameter['nativeCurrency'] = {\n name: 'Ether',\n symbol: 'ETH',\n decimals: 18,\n}\n\nconst MATIC: AddEthereumChainParameter['nativeCurrency'] = {\n name: 'Matic',\n symbol: 'MATIC',\n decimals: 18,\n}\nconst AVAX: AddEthereumChainParameter['nativeCurrency'] = {\n name: 'Avax',\n symbol: 'AVAX',\n decimals: 18,\n}\nconst BNB: AddEthereumChainParameter['nativeCurrency'] = {\n name: 'Binance Coin',\n symbol: 'BNB',\n decimals: 18,\n}\n\nconst GLMR: AddEthereumChainParameter['nativeCurrency'] = {\n name: 'Glimmer',\n symbol: 'GLMR',\n decimals: 18,\n}\nconst MOVR: AddEthereumChainParameter['nativeCurrency'] = {\n name: 'Moonriver',\n symbol: 'MOVR',\n decimals: 18,\n}\nconst METIS: AddEthereumChainParameter['nativeCurrency'] = {\n name: 'Metis',\n symbol: 'METIS',\n decimals: 18,\n}\n\nconst JEWEL: AddEthereumChainParameter['nativeCurrency'] = {\n name: 'Jewel',\n symbol: 'JEWEL',\n decimals: 18,\n}\n\nconst KLAY: AddEthereumChainParameter['nativeCurrency'] = {\n name: 'Klay',\n symbol: 'KLAY',\n decimals: 18,\n}\n\ninterface BasicChainInformation {\n urls: (string | undefined)[]\n name: string\n}\n\nexport enum NetworkName {\n ETHEREUM = 'ethereum',\n AVALANCHE = 'avalanche',\n BINANCE = 'bsc',\n MOONBEAM = 'moonbeam',\n MOONRIVER = 'moonriver',\n METIS = 'metis',\n OPTIMISM = 'optimism',\n POLYGON = 'polygon',\n DFK = 'dfk',\n KLAYTN = 'klaytn',\n}\n\ninterface ExtendedChainInformation extends BasicChainInformation {\n nativeCurrency: AddEthereumChainParameter['nativeCurrency']\n blockExplorerUrls: AddEthereumChainParameter['blockExplorerUrls']\n}\n\nexport function getAddChainParameters(chainId: number): AddEthereumChainParameter {\n const chainInformation = CHAINS[chainId]\n return {\n chainId,\n chainName: chainInformation.name,\n nativeCurrency: chainInformation.nativeCurrency,\n rpcUrls: chainInformation.urls as any,\n blockExplorerUrls: chainInformation.blockExplorerUrls,\n }\n}\n\nconst NetworkChainMap: { [key in NetworkName]: number } = {\n ethereum: 1,\n avalanche: 43114,\n bsc: 56,\n moonbeam: 1284,\n moonriver: 1285,\n metis: 1088,\n optimism: 10,\n polygon: 137,\n dfk: 53935,\n klaytn: 8217,\n}\n\nexport const CHAINS: { [chainId: number]: ExtendedChainInformation } = {\n 1: {\n urls: [\n INFURA_KEY ? `https://mainnet.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161` : undefined,\n ALCHEMY_KEY ? `https://eth-mainnet.alchemyapi.io/v2/${ALCHEMY_KEY}` : undefined,\n 'https://cloudflare-eth.com',\n ].filter((url) => url !== undefined),\n name: 'Mainnet',\n nativeCurrency: ETH,\n blockExplorerUrls: ['https://etherscan.io/'],\n },\n 5: {\n urls: [INFURA_KEY ? `https://goerli.infura.io/v3/${INFURA_KEY}` : undefined].filter((url) => url !== undefined),\n name: 'Görli',\n nativeCurrency: ETH,\n blockExplorerUrls: ['https://goerli.etherscan.io/'],\n },\n // Optimism\n 10: {\n urls: [\n INFURA_KEY ? `https://optimism-mainnet.infura.io/v3/${INFURA_KEY}` : undefined,\n 'https://mainnet.optimism.io',\n ].filter((url) => url !== undefined),\n name: 'Optimism',\n nativeCurrency: ETH,\n blockExplorerUrls: ['https://optimistic.etherscan.io'],\n },\n // Arbitrum\n 42161: {\n urls: [\n INFURA_KEY ? `https://arbitrum-mainnet.infura.io/v3/${INFURA_KEY}` : undefined,\n 'https://arb1.arbitrum.io/rpc',\n ].filter((url) => url !== undefined),\n name: 'Arbitrum One',\n nativeCurrency: ETH,\n blockExplorerUrls: ['https://arbiscan.io'],\n },\n // Polygon\n 137: {\n urls: [\n INFURA_KEY ? `https://polygon-mainnet.infura.io/v3/${INFURA_KEY}` : undefined,\n 'https://polygon-rpc.com',\n ].filter((url) => url !== undefined),\n name: 'Polygon Mainnet',\n nativeCurrency: MATIC,\n blockExplorerUrls: ['https://polygonscan.com'],\n },\n 80001: {\n urls: [INFURA_KEY ? `https://polygon-mumbai.infura.io/v3/${INFURA_KEY}` : undefined].filter(\n (url) => url !== undefined,\n ),\n name: 'Polygon Mumbai',\n nativeCurrency: MATIC,\n blockExplorerUrls: ['https://mumbai.polygonscan.com'],\n },\n 43114: {\n urls: ['https://api.avax.network/ext/bc/C/rpc'].filter((url) => url !== undefined),\n name: 'Avalanche',\n nativeCurrency: AVAX,\n blockExplorerUrls: ['https://snowtrace.io'],\n },\n\n 56: {\n urls: ['https://bsc-dataseed.binance.org'].filter((url) => url !== undefined),\n name: 'Binance',\n nativeCurrency: BNB,\n blockExplorerUrls: ['https://bscscan.com'],\n },\n 1284: {\n urls: ['https://rpc.api.moonbeam.network'].filter((url) => url !== undefined),\n name: 'Glimmer',\n nativeCurrency: GLMR,\n blockExplorerUrls: ['https://moonbeam.moonscan.io'],\n },\n 1285: {\n urls: ['https://rpc.moonriver.moonbeam.network'].filter((url) => url !== undefined),\n name: 'Moonriver',\n nativeCurrency: MOVR,\n blockExplorerUrls: ['https://moonriver.moonscan.io'],\n },\n 1088: {\n urls: ['https://andromeda.metis.io/?owner=1088'].filter((url) => url !== undefined),\n name: 'Metis',\n nativeCurrency: METIS,\n blockExplorerUrls: ['https://andromeda-explorer.metis.io'],\n },\n 53935: {\n urls: ['https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc'].filter((url) => url !== undefined),\n name: 'DFK',\n nativeCurrency: JEWEL,\n blockExplorerUrls: ['https://subnets.avax.network/defi-kingdoms'],\n },\n 8217: {\n urls: ['https://public-node-api.klaytnapi.com/v1/cypress'].filter((url) => url !== undefined),\n name: 'Klaytn',\n nativeCurrency: KLAY,\n blockExplorerUrls: ['https://scope.klaytn.com'],\n },\n}\n\nexport const URLS: { [chainId: number]: string[] } = Object.keys(CHAINS).reduce<{ [chainId: number]: string[] }>(\n (accumulator, chainId) => {\n const validURLs: string[] = CHAINS[Number(chainId)].urls as any\n\n if (validURLs.length) {\n accumulator[Number(chainId)] = validURLs\n }\n\n return accumulator\n },\n {},\n)\nexport const getAddChainParametersfromNetworkName = (network: NetworkName): AddEthereumChainParameter | number => {\n const chainId = NetworkChainMap[network]\n return getAddChainParameters(chainId)\n}\n","import { Connector } from '@web3-react/types'\n\nimport {\n injectedConnection,\n coinbaseWalletConnection,\n walletConnectConnection,\n networkConnection,\n ConnectionType,\n} from './connectors'\nconst CONNECTIONS = [injectedConnection, coinbaseWalletConnection, walletConnectConnection, networkConnection]\n\nexport function getConnection(connector: Connector | ConnectionType) {\n if (connector instanceof Connector) {\n const connection = CONNECTIONS.find((connection) => connection.connector === connector)\n if (!connection) {\n throw Error('unsupported connector')\n }\n\n return connection\n } else {\n switch (connector) {\n case ConnectionType.INJECTED:\n return injectedConnection\n case ConnectionType.COINBASE_WALLET:\n return coinbaseWalletConnection\n case ConnectionType.WALLET_CONNECT:\n return walletConnectConnection\n case ConnectionType.NETWORK:\n return networkConnection\n default:\n throw Error('invalid connector')\n }\n }\n}\n\nexport function getConnectionName(connectionType: ConnectionType, isMetaMask?: boolean, connectionName?: string) {\n switch (connectionType) {\n case ConnectionType.INJECTED:\n return isMetaMask ? 'MetaMask' : connectionName ? connectionName : 'Browser Wallet'\n case ConnectionType.COINBASE_WALLET:\n return 'Coinbase Wallet'\n case ConnectionType.WALLET_CONNECT:\n return 'WalletConnect'\n case ConnectionType.NETWORK:\n return 'Network'\n case ConnectionType.GNOSIS_SAFE:\n return 'Gnosis Safe'\n }\n}\n","import { useMemo } from 'react'\nimport { ConnectionType } from '../connection/connectors'\nimport { getConnection } from '../connection/utils'\n\nconst SELECTABLE_WALLETS = [ConnectionType.INJECTED, ConnectionType.COINBASE_WALLET, ConnectionType.WALLET_CONNECT]\n\nexport default function useOrderedConnections(selectedWallet: ConnectionType | undefined) {\n return useMemo(() => {\n const orderedConnectionTypes: ConnectionType[] = []\n\n // Add the `selectedWallet` to the top so it's prioritized, then add the other selectable wallets.\n if (selectedWallet) {\n orderedConnectionTypes.push(selectedWallet)\n }\n orderedConnectionTypes.push(...SELECTABLE_WALLETS.filter((wallet) => wallet !== selectedWallet))\n\n // Add network connection last as it should be the fallback.\n orderedConnectionTypes.push(ConnectionType.NETWORK)\n\n return orderedConnectionTypes.map(getConnection)\n }, [selectedWallet])\n}\n"],"mappings":"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","names":["import_react","import_core","import_react","NetworkName","ConnectionType","connection","React"]}