Address.tsx
1 import React from 'react'; 2 import { connect } from 'react-redux'; 3 4 import { IWallet } from 'libs/wallet'; 5 import { BlockExplorerConfig } from 'types/network'; 6 import { AppState } from 'features/reducers'; 7 import { getChecksumAddressFn } from 'features/config'; 8 import NewTabLink from './NewTabLink'; 9 10 interface BaseProps { 11 explorer?: BlockExplorerConfig | null; 12 address?: string | null; 13 wallet?: IWallet | null; 14 } 15 16 interface StateProps { 17 toChecksumAddress: ReturnType<typeof getChecksumAddressFn>; 18 } 19 20 type Props = BaseProps & StateProps; 21 22 export class Address extends React.PureComponent<Props> { 23 public render() { 24 const { wallet, address, explorer, toChecksumAddress } = this.props; 25 let renderAddress = ''; 26 if (address !== null && address !== undefined) { 27 renderAddress = address; 28 } else { 29 renderAddress = wallet !== null && wallet !== undefined ? wallet.getAddressString() : ''; 30 } 31 renderAddress = toChecksumAddress(renderAddress); 32 33 if (explorer) { 34 return <NewTabLink href={explorer.addressUrl(renderAddress)}>{renderAddress}</NewTabLink>; 35 } else { 36 return <React.Fragment>{renderAddress}</React.Fragment>; 37 } 38 } 39 } 40 41 export default connect((state: AppState) => ({ 42 toChecksumAddress: getChecksumAddressFn(state) 43 }))(Address);