1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-27 21:00:13 +01:00
metamask-extension/ui/app/selectors.js

61 lines
1.8 KiB
JavaScript
Raw Normal View History

const valuesFor = require('./util').valuesFor
const selectors = {
getSelectedAddress,
getSelectedIdentity,
getSelectedAccount,
2017-09-06 12:17:49 +02:00
getSelectedToken,
conversionRateSelector,
transactionsSelector,
}
module.exports = selectors
2017-08-29 16:50:48 +02:00
function getSelectedAddress (state) {
// TODO: accounts is not defined. Is it needed?
const selectedAddress = state.metamask.selectedAddress || Object.keys(accounts)[0]
return selectedAddress
}
2017-08-29 16:50:48 +02:00
function getSelectedIdentity (state) {
const selectedAddress = getSelectedAddress(state)
const identities = state.metamask.identities
return identities[selectedAddress]
}
2017-08-29 16:50:48 +02:00
function getSelectedAccount (state) {
const accounts = state.metamask.accounts
const selectedAddress = getSelectedAddress(state)
return accounts[selectedAddress]
}
2017-09-06 12:17:49 +02:00
function getSelectedToken (state) {
const tokens = state.metamask.tokens || []
const selectedTokenAddress = state.metamask.selectedTokenAddress
const selectedToken = tokens.filter(({ address }) => address === selectedTokenAddress)[0]
return selectedToken || null
}
2017-08-29 16:50:48 +02:00
function conversionRateSelector (state) {
return state.metamask.conversionRate
}
2017-08-29 16:50:48 +02:00
function transactionsSelector (state) {
const { network, selectedTokenAddress } = state.metamask
const unapprovedMsgs = valuesFor(state.metamask.unapprovedMsgs)
const shapeShiftTxList = (network === '1') ? state.metamask.shapeShiftTxList : undefined
const transactions = state.metamask.selectedAddressTxList || []
const txsToRender = !shapeShiftTxList ? transactions.concat(unapprovedMsgs) : transactions.concat(unapprovedMsgs, shapeShiftTxList)
return selectedTokenAddress
? txsToRender
.filter(({ to }) => to === selectedTokenAddress)
.sort((a, b) => b.time - a.time)
: txsToRender
.sort((a, b) => b.time - a.time)
2017-08-29 16:50:48 +02:00
}