mirror of
https://github.com/trezor/trezor-wallet
synced 2024-12-01 04:38:15 +00:00
token existence validation
This commit is contained in:
parent
4589bb9171
commit
2a7d5394db
@ -90,8 +90,20 @@ export const observe = (prevState: ReducersState, action: Action): ThunkAction =
|
|||||||
let shouldUpdate: boolean = false;
|
let shouldUpdate: boolean = false;
|
||||||
// check if "selectedAccount" reducer changed
|
// check if "selectedAccount" reducer changed
|
||||||
shouldUpdate = reducerUtils.observeChanges(prevState.selectedAccount, currentState.selectedAccount, {
|
shouldUpdate = reducerUtils.observeChanges(prevState.selectedAccount, currentState.selectedAccount, {
|
||||||
account: ['balance', 'nonce'],
|
account: ['balance', 'nonce', 'tokens'],
|
||||||
});
|
});
|
||||||
|
if (shouldUpdate && currentState.sendForm.currency !== currentState.sendForm.networkSymbol) {
|
||||||
|
// make sure that this token is added into account
|
||||||
|
const { account, tokens } = getState().selectedAccount;
|
||||||
|
if (!account) return;
|
||||||
|
const token = findToken(tokens, account.address, currentState.sendForm.currency, account.deviceState);
|
||||||
|
if (!token) {
|
||||||
|
// token not found, re-init form
|
||||||
|
dispatch(init());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// check if "sendForm" reducer changed
|
// check if "sendForm" reducer changed
|
||||||
if (!shouldUpdate) {
|
if (!shouldUpdate) {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
/* @flow */
|
/* @flow */
|
||||||
import * as storageUtils from 'utils/storage';
|
import * as storageUtils from 'utils/storage';
|
||||||
|
import { findToken } from 'reducers/TokensReducer';
|
||||||
|
|
||||||
import type { State as SendFormState } from 'reducers/SendFormReducer';
|
import type { State as SendFormState } from 'reducers/SendFormReducer';
|
||||||
import type {
|
import type {
|
||||||
@ -38,6 +39,16 @@ export const loadDraftTransaction = (): PayloadAction<?SendFormState> => (dispat
|
|||||||
storageUtils.remove(TYPE, key);
|
storageUtils.remove(TYPE, key);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
// check if selected currency is token and make sure that this token is added into account
|
||||||
|
if (state.currency !== state.networkSymbol) {
|
||||||
|
const { account, tokens } = getState().selectedAccount;
|
||||||
|
if (!account) return null;
|
||||||
|
const token = findToken(tokens, account.address, state.currency, account.deviceState);
|
||||||
|
if (!token) {
|
||||||
|
storageUtils.remove(TYPE, key);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
return state;
|
return state;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user