mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-01 00:28:06 +01:00
bf1bb6ca7e
Adds additional validation to chainId values in the network form, by comparing the specified value against the value returned by the endpoint.
83 lines
2.7 KiB
JavaScript
83 lines
2.7 KiB
JavaScript
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 NetworksTab from './networks-tab.component'
|
|
import { defaultNetworksData } from './networks-tab.constants'
|
|
|
|
const defaultNetworks = defaultNetworksData.map((network) => ({ ...network, viewOnly: true }))
|
|
|
|
const mapStateToProps = (state) => {
|
|
const {
|
|
frequentRpcListDetail,
|
|
provider,
|
|
} = state.metamask
|
|
const {
|
|
networksTabSelectedRpcUrl,
|
|
networksTabIsInAddMode,
|
|
} = state.appState
|
|
|
|
const frequentRpcNetworkListDetails = frequentRpcListDetail.map((rpc) => {
|
|
return {
|
|
label: rpc.nickname,
|
|
iconColor: '#6A737D',
|
|
providerType: 'rpc',
|
|
rpcUrl: rpc.rpcUrl,
|
|
chainId: rpc.chainId,
|
|
ticker: rpc.ticker,
|
|
blockExplorerUrl: (rpc.rpcPrefs && 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 !== 'rpc' && network.providerType === provider.type)
|
|
}) || {}
|
|
networkDefaultedToProvider = true
|
|
}
|
|
|
|
return {
|
|
selectedNetwork,
|
|
networksToRender,
|
|
networkIsSelected,
|
|
networksTabIsInAddMode,
|
|
providerType: provider.type,
|
|
providerUrl: provider.rpcUrl,
|
|
networkDefaultedToProvider,
|
|
}
|
|
}
|
|
|
|
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)
|