import React, { PureComponent } from 'react'; import PropTypes from 'prop-types'; import ToggleButton from '../../../components/ui/toggle-button'; import { REVEAL_SEED_ROUTE } from '../../../helpers/constants/routes'; import Button from '../../../components/ui/button'; import { getNumberOfSettingsInSection, handleSettingsRefs, } from '../../../helpers/utils/settings-search'; import { EVENT, EVENT_NAMES } from '../../../../shared/constants/metametrics'; export default class SecurityTab extends PureComponent { static contextTypes = { t: PropTypes.func, trackEvent: PropTypes.func, }; static propTypes = { warning: PropTypes.string, history: PropTypes.object, participateInMetaMetrics: PropTypes.bool.isRequired, setParticipateInMetaMetrics: PropTypes.func.isRequired, showIncomingTransactions: PropTypes.bool.isRequired, setShowIncomingTransactionsFeatureFlag: PropTypes.func.isRequired, setUsePhishDetect: PropTypes.func.isRequired, usePhishDetect: PropTypes.bool.isRequired, useMultiAccountBalanceChecker: PropTypes.bool.isRequired, setUseMultiAccountBalanceChecker: PropTypes.func.isRequired, }; settingsRefs = Array( getNumberOfSettingsInSection( this.context.t, this.context.t('securityAndPrivacy'), ), ) .fill(undefined) .map(() => { return React.createRef(); }); componentDidUpdate() { const { t } = this.context; handleSettingsRefs(t, t('securityAndPrivacy'), this.settingsRefs); } componentDidMount() { const { t } = this.context; handleSettingsRefs(t, t('securityAndPrivacy'), this.settingsRefs); } renderSeedWords() { const { t } = this.context; const { history } = this.props; return (
{t('revealSeedWords')}
); } renderIncomingTransactionsOptIn() { const { t } = this.context; const { showIncomingTransactions, setShowIncomingTransactionsFeatureFlag } = this.props; return (
{t('showIncomingTransactions')}
{t('showIncomingTransactionsDescription')}
setShowIncomingTransactionsFeatureFlag(!value) } offLabel={t('off')} onLabel={t('on')} />
); } renderPhishingDetectionToggle() { const { t } = this.context; const { usePhishDetect, setUsePhishDetect } = this.props; return (
{t('usePhishingDetection')}
{t('usePhishingDetectionDescription')}
setUsePhishDetect(!value)} offLabel={t('off')} onLabel={t('on')} />
); } renderMetaMetricsOptIn() { const { t } = this.context; const { participateInMetaMetrics, setParticipateInMetaMetrics } = this.props; return (
{t('participateInMetaMetrics')}
{t('participateInMetaMetricsDescription')}
setParticipateInMetaMetrics(!value)} offLabel={t('off')} onLabel={t('on')} />
); } renderMultiAccountBalanceCheckerOptIn() { const { t } = this.context; const { useMultiAccountBalanceChecker, setUseMultiAccountBalanceChecker } = this.props; return (
{t('useMultiAccountBalanceChecker')}
{t('useMultiAccountBalanceCheckerDescription')}
setUseMultiAccountBalanceChecker(!value)} offLabel={t('off')} onLabel={t('on')} />
); } render() { const { warning } = this.props; return (
{warning ?
{warning}
: null} {this.renderSeedWords()} {this.renderIncomingTransactionsOptIn()} {this.renderPhishingDetectionToggle()} {this.renderMetaMetricsOptIn()} {this.renderMultiAccountBalanceCheckerOptIn()}
); } }