mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-22 09:57:02 +01:00
add safegaurd for missing account in action (#15450)
* add safegaurd for missing account in action * add test to cover case
This commit is contained in:
parent
71cc3397bf
commit
cfe5f3a99a
@ -1571,11 +1571,11 @@ const slice = createSlice({
|
||||
slice.caseReducers.validateSendState(state);
|
||||
})
|
||||
.addCase(SELECTED_ACCOUNT_CHANGED, (state, action) => {
|
||||
// If we are on the edit flow the account we are keyed into will be the
|
||||
// original 'from' account, which may differ from the selected account
|
||||
if (state.stage !== SEND_STAGES.EDIT) {
|
||||
// This event occurs when the user selects a new account from the
|
||||
// account menu, or the currently active account's balance updates.
|
||||
// We only care about new transactions, not edits, here, because we use
|
||||
// the fromAccount and ACCOUNT_CHANGED action for that.
|
||||
if (state.stage !== SEND_STAGES.EDIT && action.payload.account) {
|
||||
state.selectedAccount.balance = action.payload.account.balance;
|
||||
state.selectedAccount.address = action.payload.account.address;
|
||||
const draftTransaction =
|
||||
|
@ -1139,6 +1139,28 @@ describe('Send Slice', () => {
|
||||
action.payload.account.address,
|
||||
);
|
||||
});
|
||||
|
||||
it('should gracefully handle missing account in payload', () => {
|
||||
const olderState = {
|
||||
...INITIAL_SEND_STATE_FOR_EXISTING_DRAFT,
|
||||
selectedAccount: {
|
||||
balance: '0x0',
|
||||
address: '0xAddress',
|
||||
},
|
||||
};
|
||||
|
||||
const action = {
|
||||
type: 'SELECTED_ACCOUNT_CHANGED',
|
||||
payload: {
|
||||
account: undefined,
|
||||
},
|
||||
};
|
||||
|
||||
const result = sendReducer(olderState, action);
|
||||
|
||||
expect(result.selectedAccount.balance).toStrictEqual('0x0');
|
||||
expect(result.selectedAccount.address).toStrictEqual('0xAddress');
|
||||
});
|
||||
});
|
||||
|
||||
describe('Account Changed', () => {
|
||||
|
Loading…
Reference in New Issue
Block a user