import React, { PureComponent } from 'react' import PropTypes from 'prop-types' import classnames from 'classnames' import { matchPath } from 'react-router-dom' import Identicon from '../identicon' const { ENVIRONMENT_TYPE_NOTIFICATION, ENVIRONMENT_TYPE_POPUP, } = require('../../../../app/scripts/lib/enums') const { DEFAULT_ROUTE, INITIALIZE_ROUTE, CONFIRM_TRANSACTION_ROUTE } = require('../../routes') const NetworkIndicator = require('../network') export default class AppHeader extends PureComponent { static propTypes = { history: PropTypes.object, location: PropTypes.object, network: PropTypes.string, provider: PropTypes.object, networkDropdownOpen: PropTypes.bool, showNetworkDropdown: PropTypes.func, hideNetworkDropdown: PropTypes.func, toggleAccountMenu: PropTypes.func, selectedAddress: PropTypes.string, isUnlocked: PropTypes.bool, providerRequests: PropTypes.array, } static contextTypes = { t: PropTypes.func, } handleNetworkIndicatorClick (event) { event.preventDefault() event.stopPropagation() const { networkDropdownOpen, showNetworkDropdown, hideNetworkDropdown } = this.props return networkDropdownOpen === false ? showNetworkDropdown() : hideNetworkDropdown() } /** * Returns whether or not the user is in the middle of a confirmation prompt * * This accounts for both tx confirmations as well as provider approvals * * @returns {boolean} */ isConfirming () { const { location, providerRequests } = this.props const confirmTxRouteMatch = matchPath(location.pathname, { exact: false, path: CONFIRM_TRANSACTION_ROUTE, }) const isConfirmingTx = Boolean(confirmTxRouteMatch) const hasPendingProviderApprovals = Array.isArray(providerRequests) && providerRequests.length > 0 return isConfirmingTx || hasPendingProviderApprovals } renderAccountMenu () { const { isUnlocked, toggleAccountMenu, selectedAddress } = this.props return isUnlocked && (