import React, { PureComponent } from 'react' import PropTypes from 'prop-types' import Media from 'react-media' import { Redirect } from 'react-router-dom' import { formatDate } from '../../helpers/utils/util' import HomeNotification from '../../components/app/home-notification' import DaiMigrationNotification from '../../components/app/dai-migration-component' 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_BACKUP_SEED_PHRASE_ROUTE, } from '../../helpers/constants/routes' export default class Home extends PureComponent { static contextTypes = { t: PropTypes.func, } static defaultProps = { unsetMigratedPrivacyMode: null, hasDaiV1Token: false, } static propTypes = { history: PropTypes.object, forgottenPassword: PropTypes.bool, suggestedTokens: PropTypes.object, unconfirmedTransactionsCount: PropTypes.number, providerRequests: PropTypes.array, showPrivacyModeNotification: PropTypes.bool.isRequired, unsetMigratedPrivacyMode: PropTypes.func, shouldShowSeedPhraseReminder: PropTypes.bool, isPopup: PropTypes.bool, threeBoxSynced: PropTypes.bool, setupThreeBox: PropTypes.func, turnThreeBoxSyncingOn: PropTypes.func, showRestorePrompt: PropTypes.bool, selectedAddress: PropTypes.string, restoreFromThreeBox: PropTypes.func, setShowRestorePromptToFalse: PropTypes.func, threeBoxLastUpdated: PropTypes.number, hasDaiV1Token: PropTypes.bool, } 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) } } componentDidUpdate () { const { threeBoxSynced, setupThreeBox, showRestorePrompt, threeBoxLastUpdated, } = this.props if (threeBoxSynced && showRestorePrompt && threeBoxLastUpdated === null) { setupThreeBox() } } render () { const { t } = this.context const { forgottenPassword, providerRequests, history, hasDaiV1Token, showPrivacyModeNotification, unsetMigratedPrivacyMode, shouldShowSeedPhraseReminder, isPopup, selectedAddress, restoreFromThreeBox, turnThreeBoxSyncingOn, setShowRestorePromptToFalse, showRestorePrompt, threeBoxLastUpdated, } = this.props if (forgottenPassword) { return } if (providerRequests && providerRequests.length > 0) { return ( ) } return (
} /> { !history.location.pathname.match(/^\/confirm-transaction/) ? ( { showPrivacyModeNotification ? { unsetMigratedPrivacyMode() window.open('https://medium.com/metamask/42549d4870fa', '_blank', 'noopener') }} ignoreText={t('dismiss')} onIgnore={() => { unsetMigratedPrivacyMode() }} key="home-privacyModeDefault" /> : null } { shouldShowSeedPhraseReminder ? { if (isPopup) { global.platform.openExtensionInBrowser(INITIALIZE_BACKUP_SEED_PHRASE_ROUTE) } else { history.push(INITIALIZE_BACKUP_SEED_PHRASE_ROUTE) } }} infoText={t('backupApprovalInfo')} key="home-backupApprovalNotice" /> : null } { threeBoxLastUpdated && showRestorePrompt ? { restoreFromThreeBox(selectedAddress) .then(() => { turnThreeBoxSyncingOn() }) }} onIgnore={() => { setShowRestorePromptToFalse() }} key="home-privacyModeDefault" /> : null } { hasDaiV1Token ? : null } ) : null }
) } }