import React, { PureComponent } from 'react' import PropTypes from 'prop-types' import Media from 'react-media' import { Redirect } from 'react-router-dom' import HomeNotification from '../../components/app/home-notification' import MultipleNotifications from '../../components/app/multiple-notifications' import WalletView from '../../components/app/wallet-view' import TransactionView from '../../components/app/transaction-view' import ProviderApproval from '../provider-approval' import { RESTORE_VAULT_ROUTE, CONFIRM_TRANSACTION_ROUTE, CONFIRM_ADD_SUGGESTED_TOKEN_ROUTE, INITIALIZE_SEED_PHRASE_ROUTE, } from '../../helpers/constants/routes' export default class Home extends PureComponent { static contextTypes = { t: PropTypes.func, } static defaultProps = { activeTab: {}, unsetMigratedPrivacyMode: null, forceApproveProviderRequestByOrigin: null, } static propTypes = { activeTab: PropTypes.shape({ origin: PropTypes.string, protocol: PropTypes.string, title: PropTypes.string, url: PropTypes.string, }), history: PropTypes.object, forgottenPassword: PropTypes.bool, suggestedTokens: PropTypes.object, unconfirmedTransactionsCount: PropTypes.number, providerRequests: PropTypes.array, showPrivacyModeNotification: PropTypes.bool.isRequired, unsetMigratedPrivacyMode: PropTypes.func, viewingUnconnectedDapp: PropTypes.bool.isRequired, forceApproveProviderRequestByOrigin: PropTypes.func, shouldShowSeedPhraseReminder: PropTypes.bool, showSeedPhraseBackupAfterOnboarding: PropTypes.bool, rejectProviderRequestByOrigin: PropTypes.func, } componentWillMount () { const { history, unconfirmedTransactionsCount = 0, } = this.props if (unconfirmedTransactionsCount > 0) { history.push(CONFIRM_TRANSACTION_ROUTE) } } componentDidMount () { const { history, suggestedTokens = {}, } = this.props // suggested new tokens if (Object.keys(suggestedTokens).length > 0) { history.push(CONFIRM_ADD_SUGGESTED_TOKEN_ROUTE) } } render () { const { t } = this.context const { activeTab, forgottenPassword, providerRequests, history, showPrivacyModeNotification, unsetMigratedPrivacyMode, viewingUnconnectedDapp, forceApproveProviderRequestByOrigin, shouldShowSeedPhraseReminder, showSeedPhraseBackupAfterOnboarding, rejectProviderRequestByOrigin, } = this.props if (forgottenPassword) { return } if (providerRequests && providerRequests.length > 0) { return ( ) } return (
} /> { !history.location.pathname.match(/^\/confirm-transaction/) ? ( { window.open('https://medium.com/metamask/42549d4870fa', '_blank', 'noopener') unsetMigratedPrivacyMode() }} key="home-privacyModeDefault" />, }, { shouldBeRendered: viewingUnconnectedDapp, component: { forceApproveProviderRequestByOrigin(activeTab.origin) }} ignoreText={t('dismiss')} onIgnore={() => rejectProviderRequestByOrigin(activeTab.origin)} infoText={t('shareAddressInfo', [activeTab.origin])} key="home-shareAddressToConnect" />, }, { shouldBeRendered: shouldShowSeedPhraseReminder, component: { showSeedPhraseBackupAfterOnboarding() history.push(INITIALIZE_SEED_PHRASE_ROUTE) }} infoText={t('backupApprovalInfo')} key="home-backupApprovalNotice" />, }, ]}/> ) : null }
) } }