A Metamask fork with Infura removed and default networks editable
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ciphermask/ui/app/pages/connected-sites/connected-sites.container.js

66 lines
2.1 KiB

import { connect } from 'react-redux'
import ConnectedSites from './connected-sites.component'
import { getOpenMetamaskTabsIds, legacyExposeAccounts, removePermissionsFor } from '../../store/actions'
import {
getCurrentAccountWithSendEtherInfo,
getPermissionsDomains,
getPermittedAccountsForCurrentTab,
getRenderablePermissionsDomains,
getSelectedAddress,
} from '../../selectors/selectors'
import { getOriginFromUrl } from '../../helpers/utils/util'
const mapStateToProps = (state) => {
const { openMetaMaskTabs } = state.appState
const { title, url, id } = state.activeTab
const permittedAccounts = getPermittedAccountsForCurrentTab(state)
const connectedDomains = getRenderablePermissionsDomains(state)
let tabToConnect
if (url && permittedAccounts.length === 0 && !openMetaMaskTabs[id]) {
tabToConnect = {
title,
origin: getOriginFromUrl(url),
}
}
return {
accountLabel: getCurrentAccountWithSendEtherInfo(state).name,
connectedDomains,
domains: getPermissionsDomains(state),
selectedAddress: getSelectedAddress(state),
tabToConnect,
}
}
const mapDispatchToProps = (dispatch) => {
return {
getOpenMetamaskTabsIds: () => dispatch(getOpenMetamaskTabsIds()),
disconnectAccount: (domainKey, domain) => {
const permissionMethodNames = domain.permissions.map(({ parentCapability }) => parentCapability)
dispatch(removePermissionsFor({
[domainKey]: permissionMethodNames,
}))
},
legacyExposeAccounts: (origin, account) => dispatch(legacyExposeAccounts(origin, [account])),
}
}
const mergeProps = (stateProps, dispatchProps, ownProps) => {
const { domains, selectedAddress, tabToConnect } = stateProps
const {
disconnectAccount,
legacyExposeAccounts: dispatchLegacyExposeAccounts,
} = dispatchProps
return {
...ownProps,
...stateProps,
...dispatchProps,
disconnectAccount: (domainKey) => disconnectAccount(domainKey, domains[domainKey]),
legacyExposeAccount: () => dispatchLegacyExposeAccounts(tabToConnect.origin, selectedAddress),
}
}
export default connect(mapStateToProps, mapDispatchToProps, mergeProps)(ConnectedSites)