mirror of
https://github.com/trezor/trezor-wallet
synced 2024-12-29 10:28:08 +00:00
update account tokens on each block
This commit is contained in:
parent
815fba5e6b
commit
6740b7198d
@ -16,6 +16,7 @@ import * as BLOCKCHAIN from 'actions/constants/blockchain';
|
|||||||
import * as WEB3 from 'actions/constants/web3';
|
import * as WEB3 from 'actions/constants/web3';
|
||||||
import * as PENDING from 'actions/constants/pendingTx';
|
import * as PENDING from 'actions/constants/pendingTx';
|
||||||
|
|
||||||
|
import * as AccountsActions from './AccountsActions';
|
||||||
import * as Web3Actions from './Web3Actions';
|
import * as Web3Actions from './Web3Actions';
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
@ -43,7 +44,6 @@ export const discoverAccount = (device: TrezorDevice, xpub: string, network: str
|
|||||||
const txs = await TrezorConnect.ethereumGetAccountInfo({
|
const txs = await TrezorConnect.ethereumGetAccountInfo({
|
||||||
account: {
|
account: {
|
||||||
address: xpub,
|
address: xpub,
|
||||||
// block: 3984156,
|
|
||||||
block: 0,
|
block: 0,
|
||||||
transactions: 0
|
transactions: 0
|
||||||
},
|
},
|
||||||
@ -104,7 +104,15 @@ export const onBlockMined = (network: string): PromiseAction<void> => async (dis
|
|||||||
if (response.success) {
|
if (response.success) {
|
||||||
response.payload.forEach((a, i) => {
|
response.payload.forEach((a, i) => {
|
||||||
if (a.transactions > 0) {
|
if (a.transactions > 0) {
|
||||||
|
// load additional data from Web3 (balance, nonce, tokens)
|
||||||
dispatch( Web3Actions.updateAccount(accounts[i], a, network) )
|
dispatch( Web3Actions.updateAccount(accounts[i], a, network) )
|
||||||
|
} else {
|
||||||
|
// there are no new txs, just update block
|
||||||
|
dispatch( AccountsActions.update( { ...accounts[i], ...a }) );
|
||||||
|
|
||||||
|
// HACK: since blockbook can't work with smart contracts for now
|
||||||
|
// try to update tokens balances added to this account using Web3
|
||||||
|
dispatch( Web3Actions.updateAccountTokens(accounts[i]) );
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -216,6 +216,10 @@ export const updateAccount = (account: Account, newAccount: EthereumAccount, net
|
|||||||
dispatch( AccountsActions.update( { ...account, ...newAccount, balance: EthereumjsUnits.convert(balance, 'wei', 'ether'), nonce }) );
|
dispatch( AccountsActions.update( { ...account, ...newAccount, balance: EthereumjsUnits.convert(balance, 'wei', 'ether'), nonce }) );
|
||||||
|
|
||||||
// update tokens for this account
|
// update tokens for this account
|
||||||
|
dispatch( updateAccountTokens(account) );
|
||||||
|
}
|
||||||
|
|
||||||
|
export const updateAccountTokens = (account: Account): PromiseAction<void> => async (dispatch: Dispatch, getState: GetState): Promise<void> => {
|
||||||
const tokens = getState().tokens.filter(t => t.network === account.network && t.ethAddress === account.address);
|
const tokens = getState().tokens.filter(t => t.network === account.network && t.ethAddress === account.address);
|
||||||
for (const token of tokens) {
|
for (const token of tokens) {
|
||||||
const balance = await dispatch( getTokenBalance(token) );
|
const balance = await dispatch( getTokenBalance(token) );
|
||||||
|
Loading…
Reference in New Issue
Block a user