mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-29 15:50:28 +01:00
fcfb8a8938
* added redesign storybook * updated token list * updated css * fixed lint error * updated the new token list component * fixed redesign folder error * reverted changes in settings.json * updated redesign to multichain * added feature flag * reverted settings.json * added detect token banner * added button componeny * fixed lint errors * removed settings * fixed lint errors * added stories for multichain * updated no token found string * updated lint error * updated padding values * updated padding values * updated tabs with role button * updated hover state * updated components with multichain * fixed lint errors * updated multichain import token link * updated a tag * updated fixes * updated onClick to handleClick * updated setShowDetectedTokens proptype * updated multichain tokenlist with item suffix * updated tests * updated tests * updated token list css * updated snapshot * updated text * reverted story * added story for multichain token list * updated story * updated tooltip * updated the new token list component * fixed redesign folder error * added feature flag * reverted unused setting change * removed token list * fixed lint error * updated status * updated tooltip * updated token-list-item changes * updated actionbutton click for detect token banner * updated snapshot * updated symbol * updated styles * updated eth decimal and token url * updated snapshot * updated scripts * updated snapshots
61 lines
1.8 KiB
JavaScript
61 lines
1.8 KiB
JavaScript
import React, { useContext } from 'react';
|
|
import { useSelector } from 'react-redux';
|
|
import PropTypes from 'prop-types';
|
|
import classNames from 'classnames';
|
|
|
|
import { useI18nContext } from '../../../hooks/useI18nContext';
|
|
import { getDetectedTokensInCurrentNetwork } from '../../../selectors';
|
|
import { MetaMetricsContext } from '../../../contexts/metametrics';
|
|
import { EVENT, EVENT_NAMES } from '../../../../shared/constants/metametrics';
|
|
import { BannerAlert } from '../../component-library';
|
|
|
|
export const DetectedTokensBanner = ({
|
|
className,
|
|
actionButtonOnClick,
|
|
...props
|
|
}) => {
|
|
const t = useI18nContext();
|
|
const trackEvent = useContext(MetaMetricsContext);
|
|
|
|
const detectedTokens = useSelector(getDetectedTokensInCurrentNetwork);
|
|
const detectedTokensDetails = detectedTokens.map(
|
|
({ address, symbol }) => `${symbol} - ${address}`,
|
|
);
|
|
|
|
const handleOnClick = () => {
|
|
actionButtonOnClick();
|
|
trackEvent({
|
|
event: EVENT_NAMES.TOKEN_IMPORT_CLICKED,
|
|
category: EVENT.CATEGORIES.WALLET,
|
|
properties: {
|
|
source: EVENT.SOURCE.TOKEN.DETECTED,
|
|
tokens: detectedTokensDetails,
|
|
},
|
|
});
|
|
};
|
|
return (
|
|
<BannerAlert
|
|
className={classNames('multichain-detected-token-banner', className)}
|
|
actionButtonLabel={t('importTokensCamelCase')}
|
|
actionButtonOnClick={handleOnClick}
|
|
data-testid="detected-token-banner"
|
|
{...props}
|
|
>
|
|
{detectedTokens.length === 1
|
|
? t('numberOfNewTokensDetectedSingular')
|
|
: t('numberOfNewTokensDetectedPlural', [detectedTokens.length])}
|
|
</BannerAlert>
|
|
);
|
|
};
|
|
|
|
DetectedTokensBanner.propTypes = {
|
|
/**
|
|
* Handler to be passed to the DetectedTokenBanner component
|
|
*/
|
|
actionButtonOnClick: PropTypes.func.isRequired,
|
|
/**
|
|
* An additional className to the DetectedTokenBanner component
|
|
*/
|
|
className: PropTypes.string,
|
|
};
|