1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-29 07:16:36 +01:00
metamask-extension/ui/pages/confirmation/components/confirmation-network-switch/confirmation-network-switch.js

109 lines
3.2 KiB
JavaScript
Raw Normal View History

import React from 'react';
import PropTypes from 'prop-types';
import { useSelector } from 'react-redux';
import Box from '../../../../components/ui/box';
import SiteIcon from '../../../../components/ui/site-icon';
import Typography from '../../../../components/ui/typography/typography';
import {
TypographyVariant,
FontWeight,
Display,
JustifyContent,
BlockSize,
AlignItems,
TextAlign,
TextColor,
} from '../../../../helpers/constants/design-system';
import {
CHAIN_ID_TO_NETWORK_IMAGE_URL_MAP,
NETWORK_TO_NAME_MAP,
} from '../../../../../shared/constants/network';
import { getProviderConfig } from '../../../../ducks/metamask/metamask';
export default function ConfirmationNetworkSwitch({ newNetwork }) {
const { chainId, nickname, type } = useSelector(getProviderConfig);
return (
<Box
className="confirmation-network-switch"
display={Display.Flex}
height={BlockSize.Full}
justifyContent={JustifyContent.center}
marginTop={8}
>
<Box
className="confirmation-network-switch__icon"
display={Display.Block}
>
{chainId in CHAIN_ID_TO_NETWORK_IMAGE_URL_MAP ? (
<SiteIcon
icon={CHAIN_ID_TO_NETWORK_IMAGE_URL_MAP[chainId]}
name={nickname}
size={64}
/>
) : (
<div className="confirmation-network-switch__unknown-icon">
<i className="fa fa-question fa-2x" />
</div>
)}
<Typography
color={TextColor.textDefault}
variant={TypographyVariant.H6}
fontWeight={FontWeight.Normal}
align={TextAlign.Center}
boxProps={{
display: Display.Flex,
justifyContent: JustifyContent.center,
}}
>
{nickname || NETWORK_TO_NAME_MAP[type]}
</Typography>
</Box>
<Box
className="confirmation-network-switch__center-icon"
display={Display.Flex}
alignItems={AlignItems.center}
justifyContent={JustifyContent.center}
>
<i className="fa fa-angle-right fa-lg confirmation-network-switch__check" />
<div className="confirmation-network-switch__dashed-line" />
</Box>
<Box
className="confirmation-network-switch__icon"
display={Display.Block}
>
{newNetwork.chainId in CHAIN_ID_TO_NETWORK_IMAGE_URL_MAP ? (
<SiteIcon
icon={CHAIN_ID_TO_NETWORK_IMAGE_URL_MAP[newNetwork.chainId]}
name={newNetwork.nickname}
size={64}
/>
) : (
<div className="confirmation-network-switch__unknown-icon">
<i className="fa fa-question fa-2x" />
</div>
)}
<Typography
color={TextColor.textDefault}
variant={TypographyVariant.H6}
fontWeight={FontWeight.Normal}
align={TextAlign.Center}
boxProps={{
display: Display.Flex,
justifyContent: JustifyContent.center,
}}
>
{newNetwork.nickname}
</Typography>
</Box>
</Box>
);
}
ConfirmationNetworkSwitch.propTypes = {
newNetwork: PropTypes.shape({
chainId: PropTypes.string.isRequired,
nickname: PropTypes.string.isRequired,
}),
};