1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-02 06:07:06 +01:00
metamask-extension/ui/components/app/loading-network-screen/loading-network-screen.container.js

74 lines
2.2 KiB
JavaScript

import { connect } from 'react-redux';
import { NETWORK_TYPES } from '../../../../shared/constants/network';
import * as actions from '../../../store/actions';
import {
getAllEnabledNetworks,
getNetworkIdentifier,
isNetworkLoading,
} from '../../../selectors';
import { getProviderConfig } from '../../../ducks/metamask/metamask';
import LoadingNetworkScreen from './loading-network-screen.component';
const DEPRECATED_TEST_NET_CHAINIDS = ['0x3', '0x2a', '0x4'];
const mapStateToProps = (state) => {
const { loadingMessage } = state.appState;
const providerConfig = getProviderConfig(state);
const { rpcUrl, chainId, ticker, nickname, type } = providerConfig;
const setProviderArgs =
type === NETWORK_TYPES.RPC ? [rpcUrl, chainId, ticker, nickname] : [type];
const providerChainId = chainId;
const isDeprecatedNetwork =
DEPRECATED_TEST_NET_CHAINIDS.includes(providerChainId);
const isInfuraRpcUrl = rpcUrl && new URL(rpcUrl).host.endsWith('.infura.io');
const showDeprecatedRpcUrlWarning = isDeprecatedNetwork && isInfuraRpcUrl;
// Ensure we have a nickname to provide the user
// in case of connection error
let networkName = nickname;
if (networkName === undefined) {
const networks = getAllEnabledNetworks(state);
const desiredNetwork = networks.find(
(network) => network.chainId === chainId,
);
if (desiredNetwork) {
networkName = desiredNetwork.nickname;
}
}
return {
isNetworkLoading: isNetworkLoading(state),
loadingMessage,
setProviderArgs,
providerConfig: {
...providerConfig,
nickname: networkName,
},
providerId: getNetworkIdentifier(state),
showDeprecatedRpcUrlWarning,
};
};
const mapDispatchToProps = (dispatch) => {
return {
setProviderType: (type) => {
dispatch(actions.setProviderType(type));
},
rollbackToPreviousProvider: () =>
dispatch(actions.rollbackToPreviousProvider()),
showNetworkDropdown: () => {
if (process.env.MULTICHAIN) {
return dispatch(actions.toggleNetworkMenu());
}
return dispatch(actions.showNetworkDropdown());
},
};
};
export default connect(
mapStateToProps,
mapDispatchToProps,
)(LoadingNetworkScreen);