diff --git a/src/js/actions/SelectedAccountActions.js b/src/js/actions/SelectedAccountActions.js index b45d891a..9190201a 100644 --- a/src/js/actions/SelectedAccountActions.js +++ b/src/js/actions/SelectedAccountActions.js @@ -56,7 +56,8 @@ export const updateSelectedValues = (prevState: State, action: Action): AsyncAct const account = stateUtils.getSelectedAccount(state); const network = stateUtils.getSelectedNetwork(state); const discovery = stateUtils.getDiscoveryProcess(state); - const tokens = stateUtils.getTokens(state, account); + const tokens = stateUtils.getAccountTokens(state, account); + const pending = stateUtils.getAccountPendingTx(state, account); const web3 = stateUtils.getWeb3(state); const payload: $ElementType = { @@ -65,6 +66,7 @@ export const updateSelectedValues = (prevState: State, action: Action): AsyncAct network, discovery, tokens, + pending, web3 } diff --git a/src/js/reducers/SelectedAccountReducer.js b/src/js/reducers/SelectedAccountReducer.js index 665f0822..41e6ee5f 100644 --- a/src/js/reducers/SelectedAccountReducer.js +++ b/src/js/reducers/SelectedAccountReducer.js @@ -8,6 +8,7 @@ import type { Account, Coin, Token, + PendingTx, Discovery, Web3Instance } from '~/flowtype'; @@ -18,6 +19,7 @@ export type State = { account: ?Account; network: ?Coin; tokens: Array, + pending: Array, web3: ?Web3Instance, discovery: ?Discovery }; @@ -27,6 +29,7 @@ export const initialState: State = { account: null, network: null, tokens: [], + pending: [], web3: null, discovery: null }; diff --git a/src/js/reducers/utils/index.js b/src/js/reducers/utils/index.js index 97a7b9ac..28f7a8a5 100644 --- a/src/js/reducers/utils/index.js +++ b/src/js/reducers/utils/index.js @@ -19,6 +19,7 @@ import type { Coin, Discovery, Token, + PendingTx, Web3Instance } from '~/flowtype'; @@ -83,9 +84,15 @@ export const getDiscoveryProcess = (state: State): ?Discovery => { return state.discovery.find(d => d.deviceState === device.state && d.network === locationState.network); } -export const getTokens = (state: State, account: ?Account): Array => { +export const getAccountPendingTx = (state: State, account: ?Account): Array => { const a = account; - if (!a) return state.selectedAccount.tokens; + if (!a) return state.selectedAccount.pending.length > 0 ? [] : state.selectedAccount.pending; + return state.pending.filter(p => p.network === a.network && p.address === a.address); +} + +export const getAccountTokens = (state: State, account: ?Account): Array => { + const a = account; + if (!a) return state.selectedAccount.tokens.length > 0 ? [] : state.selectedAccount.tokens; return state.tokens.filter(t => t.ethAddress === a.address && t.network === a.network && t.deviceState === a.deviceState); }