mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Make permissions selectors less bad (#8529)
* make getPermittedAccountsForCurrentTab more efficient * add missing docstrings
This commit is contained in:
parent
8b308884b7
commit
351424df7d
@ -6,9 +6,30 @@ import {
|
|||||||
|
|
||||||
// selectors
|
// selectors
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the permission domains object.
|
||||||
|
*
|
||||||
|
* @param {Object} state - The current state.
|
||||||
|
* @returns {Object} The permissions domains object.
|
||||||
|
*/
|
||||||
|
export function getPermissionDomains (state) {
|
||||||
|
return state.metamask.domains || {}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the permission domains metadata object.
|
||||||
|
*
|
||||||
|
* @param {Object} state - The current state.
|
||||||
|
* @returns {Object} The permission domains metadata object.
|
||||||
|
*/
|
||||||
|
export function getPermissionDomainsMetadata (state) {
|
||||||
|
return state.metamask.domainMetadata || {}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Selects the permitted accounts from the eth_accounts permission given state
|
* Selects the permitted accounts from the eth_accounts permission given state
|
||||||
* and an origin.
|
* and an origin.
|
||||||
|
*
|
||||||
* @param {Object} state - The current state.
|
* @param {Object} state - The current state.
|
||||||
* @param {string} origin - The origin/domain to get the permitted accounts for.
|
* @param {string} origin - The origin/domain to get the permitted accounts for.
|
||||||
* @returns {Array<string>} An empty array or an array of accounts.
|
* @returns {Array<string>} An empty array or an array of accounts.
|
||||||
@ -21,8 +42,23 @@ export function getPermittedAccounts (state, origin) {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Selects the permitted accounts from the eth_accounts permission for the
|
||||||
|
* origin of the current tab.
|
||||||
|
*
|
||||||
|
* @param {Object} state - The current state.
|
||||||
|
* @returns {Array<string>} An empty array or an array of accounts.
|
||||||
|
*/
|
||||||
|
export function getPermittedAccountsForCurrentTab (state) {
|
||||||
|
return getPermittedAccounts(
|
||||||
|
state,
|
||||||
|
getOriginOfCurrentTab(state)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a map of permitted accounts by origin for all origins.
|
* Returns a map of permitted accounts by origin for all origins.
|
||||||
|
*
|
||||||
* @param {Object} state - The current state.
|
* @param {Object} state - The current state.
|
||||||
* @returns {Object} Permitted accounts by origin.
|
* @returns {Object} Permitted accounts by origin.
|
||||||
*/
|
*/
|
||||||
@ -39,6 +75,16 @@ export function getPermittedAccountsByOrigin (state) {
|
|||||||
}, {})
|
}, {})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns an array of connected domain objects, with the following properties:
|
||||||
|
* - extensionId
|
||||||
|
* - key (i.e. origin)
|
||||||
|
* - name
|
||||||
|
* - icon
|
||||||
|
*
|
||||||
|
* @param {Object} state - The current state.
|
||||||
|
* @returns {Array<Object>} An array of connected domain objects.
|
||||||
|
*/
|
||||||
export function getConnectedDomainsForSelectedAddress (state) {
|
export function getConnectedDomainsForSelectedAddress (state) {
|
||||||
const {
|
const {
|
||||||
selectedAddress,
|
selectedAddress,
|
||||||
@ -71,15 +117,18 @@ export function getConnectedDomainsForSelectedAddress (state) {
|
|||||||
return connectedDomains
|
return connectedDomains
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getPermittedAccountsForCurrentTab (state) {
|
/**
|
||||||
const permittedAccountsMap = getPermittedAccountsByOrigin(state)
|
* Returns an object mapping addresses to objects mapping origins to connected
|
||||||
const originOfCurrentTab = getOriginOfCurrentTab(state)
|
* domain info. Domain info objects have the following properties:
|
||||||
return permittedAccountsMap[originOfCurrentTab] || []
|
* - icon
|
||||||
}
|
* - name
|
||||||
|
*
|
||||||
|
* @param {Object} state - The current state.
|
||||||
|
* @returns {Object} A mapping of addresses to a mapping of origins to
|
||||||
|
* connected domain info.
|
||||||
|
*/
|
||||||
export function getAddressConnectedDomainMap (state) {
|
export function getAddressConnectedDomainMap (state) {
|
||||||
const domainMetadata = getPermissionDomainsMetadata(state)
|
const domainMetadata = getPermissionDomainsMetadata(state)
|
||||||
|
|
||||||
const accountsMap = getPermittedAccountsByOrigin(state)
|
const accountsMap = getPermittedAccountsByOrigin(state)
|
||||||
const addressConnectedIconMap = {}
|
const addressConnectedIconMap = {}
|
||||||
|
|
||||||
@ -136,14 +185,6 @@ function getAccountsCaveatFromPermission (accountsPermission = {}) {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getPermissionDomains (state) {
|
|
||||||
return state.metamask.domains || {}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getPermissionDomainsMetadata (state) {
|
|
||||||
return state.metamask.domainMetadata || {}
|
|
||||||
}
|
|
||||||
|
|
||||||
function domainSelector (state, origin) {
|
function domainSelector (state, origin) {
|
||||||
return origin && state.metamask?.domains[origin]
|
return origin && state.metamask?.domains[origin]
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user