diff --git a/ui/pages/add-nft/add-nft.js b/ui/pages/add-nft/add-nft.js deleted file mode 100644 index 5abec8ec622a..000000000000 --- a/ui/pages/add-nft/add-nft.js +++ /dev/null @@ -1,207 +0,0 @@ -import React, { useContext, useState } from 'react'; -import { useHistory } from 'react-router-dom'; -import { useDispatch, useSelector } from 'react-redux'; -import { isValidHexAddress } from '@metamask/controller-utils'; -import { useI18nContext } from '../../hooks/useI18nContext'; -import { DEFAULT_ROUTE } from '../../helpers/constants/routes'; -import { - DISPLAY, - FONT_WEIGHT, - TypographyVariant, -} from '../../helpers/constants/design-system'; - -import Box from '../../components/ui/box'; -import Typography from '../../components/ui/typography'; -import ActionableMessage from '../../components/ui/actionable-message'; -import PageContainer from '../../components/ui/page-container'; -import { - addNftVerifyOwnership, - getTokenStandardAndDetails, - ignoreTokens, - setNewNftAddedMessage, - updateNftDropDownState, -} from '../../store/actions'; -import FormField from '../../components/ui/form-field'; -import { - getCurrentChainId, - getIsMainnet, - getSelectedAddress, - getUseNftDetection, -} from '../../selectors'; -import { getNftsDropdownState } from '../../ducks/metamask/metamask'; -import NftsDetectionNotice from '../../components/app/nfts-detection-notice'; -import { MetaMetricsContext } from '../../contexts/metametrics'; -import { AssetType } from '../../../shared/constants/transaction'; -import { - MetaMetricsEventCategory, - MetaMetricsEventName, - MetaMetricsTokenEventSource, -} from '../../../shared/constants/metametrics'; -import { - ButtonIcon, - IconName, - ButtonIconSize, -} from '../../components/component-library'; - -export default function AddNft() { - const t = useI18nContext(); - const history = useHistory(); - const dispatch = useDispatch(); - const useNftDetection = useSelector(getUseNftDetection); - const isMainnet = useSelector(getIsMainnet); - const nftsDropdownState = useSelector(getNftsDropdownState); - const selectedAddress = useSelector(getSelectedAddress); - const chainId = useSelector(getCurrentChainId); - const addressEnteredOnImportTokensPage = - history?.location?.state?.addressEnteredOnImportTokensPage; - const contractAddressToConvertFromTokenToNft = - history?.location?.state?.tokenAddress; - - const [nftAddress, setNftAddress] = useState( - addressEnteredOnImportTokensPage ?? - contractAddressToConvertFromTokenToNft ?? - '', - ); - const [tokenId, setTokenId] = useState(''); - const [disabled, setDisabled] = useState(true); - const [nftAddFailed, setNftAddFailed] = useState(false); - const trackEvent = useContext(MetaMetricsContext); - - const handleAddNft = async () => { - try { - await dispatch(addNftVerifyOwnership(nftAddress, tokenId)); - const newNftDropdownState = { - ...nftsDropdownState, - [selectedAddress]: { - ...nftsDropdownState?.[selectedAddress], - [chainId]: { - ...nftsDropdownState?.[selectedAddress]?.[chainId], - [nftAddress]: true, - }, - }, - }; - - dispatch(updateNftDropDownState(newNftDropdownState)); - } catch (error) { - const { message } = error; - dispatch(setNewNftAddedMessage(message)); - setNftAddFailed(true); - return; - } - if (contractAddressToConvertFromTokenToNft) { - await dispatch( - ignoreTokens({ - tokensToIgnore: contractAddressToConvertFromTokenToNft, - dontShowLoadingIndicator: true, - }), - ); - } - dispatch(setNewNftAddedMessage('success')); - - const tokenDetails = await getTokenStandardAndDetails( - nftAddress, - null, - tokenId, - ); - - trackEvent({ - event: MetaMetricsEventName.NftAdded, - category: MetaMetricsEventCategory.Wallet, - sensitiveProperties: { - token_contract_address: nftAddress, - token_symbol: tokenDetails?.symbol, - token_id: tokenId, - token_standard: tokenDetails?.standard, - asset_type: AssetType.NFT, - source: MetaMetricsTokenEventSource.Custom, - }, - }); - - history.push(DEFAULT_ROUTE); - }; - - const validateAndSetAddress = (val) => { - setDisabled(!isValidHexAddress(val) || !tokenId); - setNftAddress(val); - }; - - const validateAndSetTokenId = (val) => { - setDisabled(!isValidHexAddress(nftAddress) || !val || isNaN(Number(val))); - setTokenId(val); - }; - - return ( - { - handleAddNft(); - }} - submitText={t('add')} - onCancel={() => { - history.push(DEFAULT_ROUTE); - }} - onClose={() => { - history.push(DEFAULT_ROUTE); - }} - disabled={disabled} - contentComponent={ - - {isMainnet && !useNftDetection ? : null} - {nftAddFailed && ( - - - - {t('nftAddFailedMessage')} - - setNftAddFailed(false)} - /> - - } - /> - - )} - - { - validateAndSetAddress(val); - setNftAddFailed(false); - }} - tooltipText={t('importNFTAddressToolTip')} - autoFocus - /> - { - validateAndSetTokenId(val); - setNftAddFailed(false); - }} - tooltipText={t('importNFTTokenIdToolTip')} - /> - - - } - /> - ); -}