import React, { PureComponent } from 'react'; import PropTypes from 'prop-types'; import ToggleButton from '../../../components/ui/toggle-button'; import { getNumberOfSettingsInSection, handleSettingsRefs, } from '../../../helpers/utils/settings-search'; import { EVENT } from '../../../../shared/constants/metametrics'; import Typography from '../../../components/ui/typography/typography'; import { Text } from '../../../components/component-library'; import { FONT_WEIGHT, TextColor, TypographyVariant, } from '../../../helpers/constants/design-system'; export default class ExperimentalTab extends PureComponent { static contextTypes = { t: PropTypes.func, trackEvent: PropTypes.func, }; static propTypes = { useNftDetection: PropTypes.bool, setUseNftDetection: PropTypes.func, setOpenSeaEnabled: PropTypes.func, openSeaEnabled: PropTypes.bool, transactionSecurityCheckEnabled: PropTypes.bool, setTransactionSecurityCheckEnabled: PropTypes.func, }; settingsRefs = Array( getNumberOfSettingsInSection( this.context.t, this.context.t('experimental'), ), ) .fill(undefined) .map(() => { return React.createRef(); }); componentDidUpdate() { const { t } = this.context; handleSettingsRefs(t, t('experimental'), this.settingsRefs); } componentDidMount() { const { t } = this.context; handleSettingsRefs(t, t('experimental'), this.settingsRefs); } renderOpenSeaEnabledToggle() { const { t } = this.context; const { openSeaEnabled, setOpenSeaEnabled, useNftDetection, setUseNftDetection, } = this.props; return ( <>
{t('enableOpenSeaAPI')}
{t('enableOpenSeaAPIDescription')}
{ this.context.trackEvent({ category: EVENT.CATEGORIES.SETTINGS, event: 'Enabled/Disable OpenSea', properties: { action: 'Enabled/Disable OpenSea', legacy_event: true, }, }); // value is positive when being toggled off if (value && useNftDetection) { setUseNftDetection(false); } setOpenSeaEnabled(!value); }} offLabel={t('off')} onLabel={t('on')} />
{t('useCollectibleDetection')}
{t('useCollectibleDetectionDescription')}
  • {t('useCollectibleDetectionDescriptionLine2')}
  • {t('useCollectibleDetectionDescriptionLine3')}
  • {t('useCollectibleDetectionDescriptionLine4')}
{t('useCollectibleDetectionDescriptionLine5')}
{ this.context.trackEvent({ category: EVENT.CATEGORIES.SETTINGS, event: 'Collectible Detection', properties: { action: 'Collectible Detection', legacy_event: true, }, }); if (!value && !openSeaEnabled) { setOpenSeaEnabled(!value); } setUseNftDetection(!value); }} offLabel={t('off')} onLabel={t('on')} />
); } renderTransactionSecurityCheckToggle() { const { t } = this.context; const { transactionSecurityCheckEnabled, setTransactionSecurityCheckEnabled, } = this.props; return ( <> {t('privacy')}
{t('transactionSecurityCheck')}
{t('transactionSecurityCheckDescription')} {t('selectProvider')}
{t('openSea')} { this.context.trackEvent({ category: EVENT.CATEGORIES.SETTINGS, event: 'Enabled/Disable TransactionSecurityCheck', properties: { action: 'Enabled/Disable TransactionSecurityCheck', legacy_event: true, }, }); setTransactionSecurityCheckEnabled(!value); }} />
{t('thisServiceIsExperimental')} {t('moreComingSoon')}
); } render() { return (
{process.env.TRANSACTION_SECURITY_PROVIDER && this.renderTransactionSecurityCheckToggle()} {process.env.NFTS_V1 && this.renderOpenSeaEnabledToggle()}
); } }