import { compose } from 'redux' import { connect } from 'react-redux' import { withRouter } from 'react-router-dom' import { setSelectedSettingsRpcUrl, updateAndSetCustomRpc, displayWarning, setNetworksTabAddMode, editRpc, showModal, } from '../../../store/actions' import { NETWORKS_FORM_ROUTE } from '../../../helpers/constants/routes' import { ENVIRONMENT_TYPE_FULLSCREEN } from '../../../../../shared/constants/app' import { NETWORK_TYPE_RPC } from '../../../../../shared/constants/network' import { getEnvironmentType } from '../../../../../app/scripts/lib/util' import NetworksTab from './networks-tab.component' import { defaultNetworksData } from './networks-tab.constants' const defaultNetworks = defaultNetworksData.map((network) => ({ ...network, viewOnly: true, })) const mapStateToProps = (state, ownProps) => { const { location: { pathname }, } = ownProps const environmentType = getEnvironmentType() const isFullScreen = environmentType === ENVIRONMENT_TYPE_FULLSCREEN const shouldRenderNetworkForm = isFullScreen || Boolean(pathname.match(NETWORKS_FORM_ROUTE)) const { frequentRpcListDetail, provider } = state.metamask const { networksTabSelectedRpcUrl, networksTabIsInAddMode } = state.appState const frequentRpcNetworkListDetails = frequentRpcListDetail.map((rpc) => { return { label: rpc.nickname, iconColor: '#6A737D', providerType: NETWORK_TYPE_RPC, rpcUrl: rpc.rpcUrl, chainId: rpc.chainId, ticker: rpc.ticker, blockExplorerUrl: rpc.rpcPrefs?.blockExplorerUrl || '', } }) const networksToRender = [ ...defaultNetworks, ...frequentRpcNetworkListDetails, ] let selectedNetwork = networksToRender.find( (network) => network.rpcUrl === networksTabSelectedRpcUrl, ) || {} const networkIsSelected = Boolean(selectedNetwork.rpcUrl) let networkDefaultedToProvider = false if (!networkIsSelected && !networksTabIsInAddMode) { selectedNetwork = networksToRender.find((network) => { return ( network.rpcUrl === provider.rpcUrl || (network.providerType !== NETWORK_TYPE_RPC && network.providerType === provider.type) ) }) || {} networkDefaultedToProvider = true } return { selectedNetwork, networksToRender, networkIsSelected, networksTabIsInAddMode, providerType: provider.type, providerUrl: provider.rpcUrl, networkDefaultedToProvider, isFullScreen, shouldRenderNetworkForm, } } const mapDispatchToProps = (dispatch) => { return { setSelectedSettingsRpcUrl: (newRpcUrl) => dispatch(setSelectedSettingsRpcUrl(newRpcUrl)), setRpcTarget: (newRpc, chainId, ticker, nickname, rpcPrefs) => { return dispatch( updateAndSetCustomRpc(newRpc, chainId, ticker, nickname, rpcPrefs), ) }, showConfirmDeleteNetworkModal: ({ target, onConfirm }) => { return dispatch( showModal({ name: 'CONFIRM_DELETE_NETWORK', target, onConfirm }), ) }, displayWarning: (warning) => dispatch(displayWarning(warning)), setNetworksTabAddMode: (isInAddMode) => dispatch(setNetworksTabAddMode(isInAddMode)), editRpc: (oldRpc, newRpc, chainId, ticker, nickname, rpcPrefs) => { return dispatch( editRpc(oldRpc, newRpc, chainId, ticker, nickname, rpcPrefs), ) }, } } export default compose( withRouter, connect(mapStateToProps, mapDispatchToProps), )(NetworksTab)