diff --git a/packages/example/pages/index.tsx b/packages/example/pages/index.tsx index 732eed5a..885c29c4 100644 --- a/packages/example/pages/index.tsx +++ b/packages/example/pages/index.tsx @@ -3,7 +3,7 @@ import { ensureLeading0x } from '@celo/utils/lib/address'; import { Alfajores, Baklava, - Mainnet, + CeloMainnet, useContractKit, } from '@celo-tools/use-contractkit'; import { BigNumber } from 'bignumber.js'; @@ -27,7 +27,7 @@ function truncateAddress(address: string) { return `${address.slice(0, 8)}...${address.slice(36)}`; } -const networks = [Alfajores, Baklava, Mainnet]; +const networks = [Alfajores, Baklava, CeloMainnet]; export default function Home(): React.ReactElement { const { diff --git a/packages/use-contractkit/package.json b/packages/use-contractkit/package.json index 65580e62..c117e963 100644 --- a/packages/use-contractkit/package.json +++ b/packages/use-contractkit/package.json @@ -1,6 +1,6 @@ { - "name": "@celo-tools/use-contractkit", - "version": "1.2.0", + "name": "@poofcash/use-contractkit", + "version": "1.0.7-beta", "private": false, "scripts": { "build": "tsc -b && yarn run build-styles", @@ -19,6 +19,7 @@ "readme": "../../readme.md", "license": "MIT", "dependencies": { + "@celo-tools/celo-ethers-wrapper": "^0.0.5", "@celo/contractkit": "1.2.4", "@celo/utils": "1.2.4", "@celo/wallet-base": "1.2.4", @@ -34,6 +35,7 @@ "@walletconnect/client": "2.0.0-beta.0", "@walletconnect/types": "2.0.0-beta.0", "autoprefixer": "^10.2.6", + "ethers": "^5.4.6", "postcss": "^8.3.5", "qrcode.react": "^1.0.1", "react-device-detect": "^1.17.0", diff --git a/packages/use-contractkit/src/components/AddCeloNetworkButton.tsx b/packages/use-contractkit/src/components/AddCeloNetworkButton.tsx index a7f14094..416982cb 100644 --- a/packages/use-contractkit/src/components/AddCeloNetworkButton.tsx +++ b/packages/use-contractkit/src/components/AddCeloNetworkButton.tsx @@ -1,6 +1,12 @@ import React from 'react'; -import { Alfajores, Baklava, Mainnet } from '../constants'; +import { + Alfajores, + Baklava, + CeloMainnet, + EthereumMainnet, + Kovan, +} from '../constants'; import { ChainId, Network } from '../types'; const CELO_PARAMS = { @@ -26,10 +32,26 @@ const BAKLAVA_PARAMS = { }, }; +const ETHEREUM_PARAMS = { + chainName: 'Ethereum', + nativeCurrency: { name: 'Ethereum', symbol: 'ETH', decimals: 18 as const }, +}; + +const KOVAN_PARAMS = { + chainName: 'Kovan', + nativeCurrency: { + name: 'Kovan Ethereum', + symbol: 'KETH', + decimals: 18 as const, + }, +}; + const params: { [chain in ChainId]: typeof CELO_PARAMS } = { - [ChainId.Mainnet]: CELO_PARAMS, + [ChainId.CeloMainnet]: CELO_PARAMS, [ChainId.Alfajores]: ALFAJORES_PARAMS, [ChainId.Baklava]: BAKLAVA_PARAMS, + [ChainId.EthereumMainnet]: ETHEREUM_PARAMS, + [ChainId.Kovan]: KOVAN_PARAMS, }; interface AddEthereumChainParameter { @@ -60,9 +82,11 @@ interface Props { } const NETWORKS = { - [ChainId.Mainnet]: Mainnet, + [ChainId.CeloMainnet]: CeloMainnet, [ChainId.Alfajores]: Alfajores, [ChainId.Baklava]: Baklava, + [ChainId.EthereumMainnet]: EthereumMainnet, + [ChainId.Kovan]: Kovan, }; export const AddCeloNetworkButton: React.FC = ({ chainId }: Props) => { diff --git a/packages/use-contractkit/src/components/ProviderSelect.tsx b/packages/use-contractkit/src/components/ProviderSelect.tsx index 325190ec..7c77b4a9 100644 --- a/packages/use-contractkit/src/components/ProviderSelect.tsx +++ b/packages/use-contractkit/src/components/ProviderSelect.tsx @@ -1,4 +1,6 @@ import React from 'react'; +import { isMobile } from 'react-device-detect'; +import { SupportedProviders } from '../constants'; import { Provider } from '../types'; @@ -11,6 +13,25 @@ export const ProviderSelect: React.FC = ({ provider, onClick, }: Props) => { + let title = ( +
+ {provider.canConnect() ? provider.name : `Install ${provider.name}`} +
+ ); + if ( + isMobile && + [ + SupportedProviders.MetaMask.toString(), + SupportedProviders.imToken.toString(), + ].includes(provider.name) + ) { + title = ( +
+ {provider.canConnect() ? provider.name : `Open ${provider.name}`} +
+ ); + } + return (