import { toChecksumAddress } from 'ethereumjs-util'; import { getSelectedIdentity, getAccountType } from '../selectors'; import { getProviderConfig } from '../../ducks/metamask/metamask'; import { hexToDecimal } from '../../../shared/modules/conversion.utils'; export function getWaitForConfirmDeepLinkDialog(state) { return state.metamask.waitForConfirmDeepLinkDialog; } export function getTransactionStatusMap(state) { return state.metamask.custodyStatusMaps; } export function getCustodyAccountDetails(state) { return state.metamask.custodyAccountDetails; } export function getCustodyAccountSupportedChains(state, address) { return state.metamask.custodianSupportedChains ? state.metamask.custodianSupportedChains[toChecksumAddress(address)] : []; } export function getMmiPortfolioEnabled(state) { return state.metamask.mmiConfiguration?.portfolio?.enabled; } export function getMmiPortfolioUrl(state) { return state.metamask.mmiConfiguration?.portfolio?.url; } export function getConfiguredCustodians(state) { return state.metamask.mmiConfiguration?.custodians || []; } export function getCustodianIconForAddress(state, address) { let custodianIcon; const checksummedAddress = address && toChecksumAddress(address); if ( checksummedAddress && state.metamask.custodyAccountDetails?.[checksummedAddress] ) { const { custodianName } = state.metamask.custodyAccountDetails[checksummedAddress]; custodianIcon = state.metamask.mmiConfiguration?.custodians?.find( (custodian) => custodian.name === custodianName, )?.iconUrl; } return custodianIcon; } export function getIsCustodianSupportedChain(state) { const selectedIdentity = getSelectedIdentity(state); const accountType = getAccountType(state); const providerConfig = getProviderConfig(state); const supportedChains = accountType === 'custody' ? getCustodyAccountSupportedChains(state, selectedIdentity.address) : null; return supportedChains?.supportedChains ? supportedChains.supportedChains.includes( hexToDecimal(providerConfig.chainId), ) : true; } export function getMMIAddressFromModalOrAddress(state) { return ( state.appState.modal.modalState.props.address || state.metamask.selectedAddress ); } export function getMMIConfiguration(state) { return state.metamask.mmiConfiguration || []; } export function getInteractiveReplacementToken(state) { return state.metamask.interactiveReplacementToken || {}; } export function getIsNoteToTraderSupported(state, fromChecksumHexAddress) { let isNoteToTraderSupported = false; if (state.metamask.custodyAccountDetails?.[fromChecksumHexAddress]) { const { custodianName } = state.metamask.custodyAccountDetails[fromChecksumHexAddress]; isNoteToTraderSupported = state.metamask.mmiConfiguration?.custodians?.find( (custodian) => custodian.name === custodianName, )?.isNoteToTraderSupported; } return isNoteToTraderSupported; }