diff options
Diffstat (limited to 'packages/instant/src/components/payment_method.tsx')
-rw-r--r-- | packages/instant/src/components/payment_method.tsx | 48 |
1 files changed, 13 insertions, 35 deletions
diff --git a/packages/instant/src/components/payment_method.tsx b/packages/instant/src/components/payment_method.tsx index 49ec22164..f9d02ec5b 100644 --- a/packages/instant/src/components/payment_method.tsx +++ b/packages/instant/src/components/payment_method.tsx @@ -3,7 +3,9 @@ import * as React from 'react'; import { ColorOption } from '../style/theme'; import { Account, AccountState, Network } from '../types'; +import { envUtil } from '../util/env'; +import { CoinbaseWalletAppLogo } from './coinbase_wallet_logo'; import { MetaMaskLogo } from './meta_mask_logo'; import { PaymentMethodDropdown } from './payment_method_dropdown'; import { Circle } from './ui/circle'; @@ -11,10 +13,12 @@ import { Container } from './ui/container'; import { Flex } from './ui/flex'; import { Icon } from './ui/icon'; import { Text } from './ui/text'; +import { WalletPrompt } from './wallet_prompt'; export interface PaymentMethodProps { account: Account; network: Network; + walletName: string; onInstallWalletClick: () => void; onUnlockWalletClick: () => void; } @@ -34,7 +38,7 @@ export class PaymentMethod extends React.Component<PaymentMethodProps> { > {this._renderTitleText()} </Text> - <Flex>{this._renderTitleLabel()}</Flex> + {this._renderTitleLabel()} </Flex> </Container> {this._renderMainContent()} @@ -58,20 +62,22 @@ export class PaymentMethod extends React.Component<PaymentMethodProps> { if (account.state === AccountState.Ready || account.state === AccountState.Locked) { const circleColor: ColorOption = account.state === AccountState.Ready ? ColorOption.green : ColorOption.red; return ( - <React.Fragment> + <Flex> <Circle diameter={8} color={circleColor} /> <Container marginLeft="3px"> <Text fontColor={ColorOption.darkGrey} fontSize="12px"> - MetaMask + {this.props.walletName} </Text> </Container> - </React.Fragment> + </Flex> ); } return null; }; private readonly _renderMainContent = (): React.ReactNode => { const { account, network } = this.props; + const isMobile = envUtil.isMobileOperatingSystem(); + const logo = isMobile ? <CoinbaseWalletAppLogo width={22} /> : <MetaMaskLogo width={19} height={18} />; switch (account.state) { case AccountState.Loading: // Just take up the same amount of space as the other states. @@ -82,16 +88,13 @@ export class PaymentMethod extends React.Component<PaymentMethodProps> { onClick={this.props.onUnlockWalletClick} image={<Icon width={13} icon="lock" color={ColorOption.black} />} > - Please Unlock MetaMask + Please Unlock {this.props.walletName} </WalletPrompt> ); case AccountState.None: return ( - <WalletPrompt - onClick={this.props.onInstallWalletClick} - image={<MetaMaskLogo width={19} height={18} />} - > - Install MetaMask + <WalletPrompt onClick={this.props.onInstallWalletClick} image={logo}> + {isMobile ? 'Install Coinbase Wallet' : 'Install MetaMask'} </WalletPrompt> ); case AccountState.Ready: @@ -105,28 +108,3 @@ export class PaymentMethod extends React.Component<PaymentMethodProps> { } }; } - -interface WalletPromptProps { - image: React.ReactNode; - onClick?: () => void; -} - -const WalletPrompt: React.StatelessComponent<WalletPromptProps> = ({ onClick, image, children }) => ( - <Container - padding="14.5px" - border={`1px solid ${ColorOption.darkOrange}`} - backgroundColor={ColorOption.lightOrange} - width="100%" - borderRadius="4px" - onClick={onClick} - cursor={onClick ? 'pointer' : undefined} - boxShadowOnHover={!!onClick} - > - <Flex> - <Container marginRight="10px">{image}</Container> - <Text fontSize="16px" fontColor={ColorOption.darkOrange}> - {children} - </Text> - </Flex> - </Container> -); |