balance fetch fixes
This commit is contained in:
parent
fe35b811c4
commit
f94e598609
|
@ -7,7 +7,7 @@ import { type Token } from '~/logic/tokens/store/model/token'
|
|||
import { ETH_ADDRESS } from '~/logic/tokens/utils/tokenHelpers'
|
||||
import { getBalanceInEtherOf } from '~/logic/wallets/getWeb3'
|
||||
import { getStandardTokenContract } from './fetchTokens'
|
||||
import { addTokens } from './saveTokens'
|
||||
import saveTokens from './saveTokens'
|
||||
|
||||
export const calculateBalanceOf = async (tokenAddress: string, safeAddress: string, decimals: number = 18) => {
|
||||
if (tokenAddress === ETH_ADDRESS) {
|
||||
|
@ -37,14 +37,14 @@ const fetchTokenBalances = (safeAddress: string, tokens: List<Token>) => async (
|
|||
|
||||
try {
|
||||
const withBalances = await Promise.all(
|
||||
tokens.map(async token => token.set('funds', await calculateBalanceOf(token.address, safeAddress, token.decimals))),
|
||||
tokens.map(async token => token.set('balance', await calculateBalanceOf(token.address, safeAddress, token.decimals))),
|
||||
)
|
||||
|
||||
const tokensMap = Map().withMutations((map) => {
|
||||
withBalances.forEach(token => map.set(token.address, token))
|
||||
})
|
||||
|
||||
dispatch(addTokens(safeAddress, tokensMap))
|
||||
dispatch(saveTokens(safeAddress, tokensMap))
|
||||
} catch (err) {
|
||||
// eslint-disable-next-line
|
||||
console.error('Error while loading active tokens from storage:', err)
|
||||
|
|
|
@ -15,7 +15,7 @@ type TokenProps = {
|
|||
tokens: Map<string, Token>,
|
||||
}
|
||||
|
||||
export const addTokens = createAction<string, *, *>(
|
||||
const addTokens = createAction<string, *, *>(
|
||||
ADD_TOKENS,
|
||||
(safeAddress: string, tokens: Map<string, Token>): TokenProps => ({
|
||||
safeAddress,
|
||||
|
|
|
@ -1,27 +1,15 @@
|
|||
// @flow
|
||||
import { List, Map } from 'immutable'
|
||||
import { createSelector, type Selector } from 'reselect'
|
||||
import { safeParamAddressSelector, type RouterProps } from '~/routes/safe/store/selectors'
|
||||
import { type RouterProps } from '~/routes/safe/store/selectors'
|
||||
import { type GlobalState } from '~/store'
|
||||
import { TOKEN_REDUCER_ID } from '~/logic/tokens/store/reducer/tokens'
|
||||
import { type Token } from '~/logic/tokens/store/model/token'
|
||||
|
||||
const tokensStateSelector = (state: GlobalState) => state[TOKEN_REDUCER_ID]
|
||||
|
||||
export const tokensSelector: Selector<GlobalState, RouterProps, Map<string, Token>> = createSelector(
|
||||
tokensStateSelector,
|
||||
safeParamAddressSelector,
|
||||
(tokens: Map<string, Map<string, Token>>, address: string) => {
|
||||
if (!address) {
|
||||
return Map()
|
||||
}
|
||||
|
||||
return tokens.get(address) || Map()
|
||||
},
|
||||
)
|
||||
export const tokensSelector = (state: GlobalState) => state[TOKEN_REDUCER_ID]
|
||||
|
||||
export const tokenListSelector: Selector<GlobalState, Map<string, Token>, List<Token>> = createSelector(
|
||||
tokensStateSelector,
|
||||
tokensSelector,
|
||||
(tokens: Map<string, Token>) => tokens.toList(),
|
||||
)
|
||||
|
||||
|
@ -29,12 +17,3 @@ export const orderedTokenListSelector: Selector<GlobalState, RouterProps, List<T
|
|||
tokenListSelector,
|
||||
(tokens: List<Token>) => tokens.sortBy((token: Token) => token.get('symbol')),
|
||||
)
|
||||
|
||||
export const tokenAddressesSelector: Selector<GlobalState, RouterProps, List<string>> = createSelector(
|
||||
tokenListSelector,
|
||||
(tokens: List<Token>) => {
|
||||
const addresses = List().withMutations(list => tokens.map(token => list.push(token.address)))
|
||||
|
||||
return addresses
|
||||
},
|
||||
)
|
||||
|
|
|
@ -17,9 +17,9 @@ export type BalanceRow = SortRow<BalanceData>
|
|||
|
||||
export const getBalanceData = (activeTokens: List<Token>): Array<BalanceRow> => {
|
||||
const rows = activeTokens.map((token: Token) => ({
|
||||
[BALANCE_TABLE_ASSET_ID]: token.get('name'),
|
||||
[BALANCE_TABLE_BALANCE_ID]: `${token.get('funds')} ${token.get('symbol')}`,
|
||||
[buildOrderFieldFrom(BALANCE_TABLE_BALANCE_ID)]: Number(token.get('funds')),
|
||||
[BALANCE_TABLE_ASSET_ID]: token.name,
|
||||
[BALANCE_TABLE_BALANCE_ID]: `${token.balance} ${token.symbol}`,
|
||||
[buildOrderFieldFrom(BALANCE_TABLE_BALANCE_ID)]: Number(token.balance),
|
||||
[FIXED]: token.get('symbol') === 'ETH',
|
||||
}))
|
||||
|
||||
|
|
|
@ -47,11 +47,15 @@ export const grantedSelector: Selector<GlobalState, RouterProps, boolean> = crea
|
|||
},
|
||||
)
|
||||
|
||||
type UserToken = {
|
||||
address: string,
|
||||
balance: string,
|
||||
}
|
||||
|
||||
const extendedSafeTokensSelector: Selector<GlobalState, RouterProps, List<Token>> = createSelector(
|
||||
safeTokensSelector,
|
||||
tokensSelector,
|
||||
(safeTokens: Map<string, string>, tokensList: Map<string, Token>) => {
|
||||
// const extendedTokens = safeTokens.map(token => tokensList.get(token.address).set('balance', token.balance))
|
||||
(safeTokens: List<UserToken>, tokensList: Map<string, Token>) => {
|
||||
const extendedTokens = Map().withMutations((map) => {
|
||||
safeTokens.forEach((token: { address: string, balance: string }) => {
|
||||
const baseToken = tokensList.get(token.address)
|
||||
|
@ -62,7 +66,7 @@ const extendedSafeTokensSelector: Selector<GlobalState, RouterProps, List<Token>
|
|||
})
|
||||
})
|
||||
|
||||
return extendedTokens
|
||||
return extendedTokens.toList()
|
||||
},
|
||||
)
|
||||
|
||||
|
|
Loading…
Reference in New Issue