mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Ensure simple send gas estimation happens after the recipient is iden… (#11485)
* Ensure simple send gas estimation happens after the recipient is identified * Update ui/ducks/send/send.test.js Co-authored-by: Alex Donesky <adonesky@gmail.com> * Improve test name * Lint fix Co-authored-by: Alex Donesky <adonesky@gmail.com>
This commit is contained in:
parent
bff17c6873
commit
3ab5419dec
@ -407,7 +407,8 @@ export const initializeSendState = createAsyncThunk(
|
|||||||
: GAS_LIMITS.SIMPLE;
|
: GAS_LIMITS.SIMPLE;
|
||||||
if (
|
if (
|
||||||
basicEstimateStatus === BASIC_ESTIMATE_STATES.READY &&
|
basicEstimateStatus === BASIC_ESTIMATE_STATES.READY &&
|
||||||
stage !== SEND_STAGES.EDIT
|
stage !== SEND_STAGES.EDIT &&
|
||||||
|
recipient.address
|
||||||
) {
|
) {
|
||||||
// Run our estimateGasLimit logic to get a more accurate estimation of
|
// Run our estimateGasLimit logic to get a more accurate estimation of
|
||||||
// required gas. If this value isn't nullish, set it as the new gasLimit
|
// required gas. If this value isn't nullish, set it as the new gasLimit
|
||||||
@ -1201,12 +1202,9 @@ export function useMyAccountsForRecipientSearch() {
|
|||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
export function updateRecipient({ address, nickname }) {
|
export function updateRecipient({ address, nickname }) {
|
||||||
return async (dispatch, getState) => {
|
return async (dispatch) => {
|
||||||
await dispatch(actions.updateRecipient({ address, nickname }));
|
await dispatch(actions.updateRecipient({ address, nickname }));
|
||||||
const state = getState();
|
await dispatch(computeEstimatedGasLimit());
|
||||||
if (state.send.asset.type === ASSET_TYPES.TOKEN) {
|
|
||||||
await dispatch(computeEstimatedGasLimit());
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1347,12 +1347,36 @@ describe('Send Slice', () => {
|
|||||||
nickname: '',
|
nickname: '',
|
||||||
};
|
};
|
||||||
|
|
||||||
it('should create an action to update recipient', async () => {
|
it('should create actions to update recipient and recalculate gas limit if the asset type is not set', async () => {
|
||||||
|
global.eth = {
|
||||||
|
getCode: sinon.stub(),
|
||||||
|
};
|
||||||
|
|
||||||
const updateRecipientState = {
|
const updateRecipientState = {
|
||||||
|
metamask: {
|
||||||
|
provider: {
|
||||||
|
chainId: '0x1',
|
||||||
|
},
|
||||||
|
},
|
||||||
send: {
|
send: {
|
||||||
|
account: {
|
||||||
|
balance: '',
|
||||||
|
},
|
||||||
asset: {
|
asset: {
|
||||||
type: '',
|
type: '',
|
||||||
},
|
},
|
||||||
|
gas: {
|
||||||
|
gasPrice: '',
|
||||||
|
},
|
||||||
|
recipient: {
|
||||||
|
address: '',
|
||||||
|
},
|
||||||
|
amount: {
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
draftTransaction: {
|
||||||
|
userInputHexData: '',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1362,18 +1386,20 @@ describe('Send Slice', () => {
|
|||||||
|
|
||||||
const actionResult = store.getActions();
|
const actionResult = store.getActions();
|
||||||
|
|
||||||
const expectedActionResult = [
|
expect(actionResult).toHaveLength(4);
|
||||||
{
|
expect(actionResult[0].type).toStrictEqual('send/updateRecipient');
|
||||||
type: 'send/updateRecipient',
|
expect(actionResult[1].type).toStrictEqual(
|
||||||
payload: recipient,
|
'send/computeEstimatedGasLimit/pending',
|
||||||
},
|
);
|
||||||
];
|
expect(actionResult[2].type).toStrictEqual(
|
||||||
|
'metamask/gas/SET_CUSTOM_GAS_LIMIT',
|
||||||
expect(actionResult).toHaveLength(1);
|
);
|
||||||
expect(actionResult).toStrictEqual(expectedActionResult);
|
expect(actionResult[3].type).toStrictEqual(
|
||||||
|
'send/computeEstimatedGasLimit/fulfilled',
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should create actions to update recipient and recalculate gas limit if the asset is a token', async () => {
|
it('should create actions to reset recipient input and ens, calculate gas and then validate input', async () => {
|
||||||
const tokenState = {
|
const tokenState = {
|
||||||
metamask: {
|
metamask: {
|
||||||
blockGasLimit: '',
|
blockGasLimit: '',
|
||||||
@ -1442,6 +1468,13 @@ describe('Send Slice', () => {
|
|||||||
address: 'Address',
|
address: 'Address',
|
||||||
nickname: 'NickName',
|
nickname: 'NickName',
|
||||||
},
|
},
|
||||||
|
gas: {
|
||||||
|
gasPrice: '0x1',
|
||||||
|
},
|
||||||
|
amount: {
|
||||||
|
value: '0x1',
|
||||||
|
},
|
||||||
|
draftTransaction: {},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1450,14 +1483,23 @@ describe('Send Slice', () => {
|
|||||||
await store.dispatch(resetRecipientInput());
|
await store.dispatch(resetRecipientInput());
|
||||||
const actionResult = store.getActions();
|
const actionResult = store.getActions();
|
||||||
|
|
||||||
expect(actionResult).toHaveLength(4);
|
expect(actionResult).toHaveLength(7);
|
||||||
expect(actionResult[0].type).toStrictEqual(
|
expect(actionResult[0].type).toStrictEqual(
|
||||||
'send/updateRecipientUserInput',
|
'send/updateRecipientUserInput',
|
||||||
);
|
);
|
||||||
expect(actionResult[0].payload).toStrictEqual('');
|
expect(actionResult[0].payload).toStrictEqual('');
|
||||||
expect(actionResult[1].type).toStrictEqual('send/updateRecipient');
|
expect(actionResult[1].type).toStrictEqual('send/updateRecipient');
|
||||||
expect(actionResult[2].type).toStrictEqual('ENS/resetEnsResolution');
|
expect(actionResult[2].type).toStrictEqual(
|
||||||
|
'send/computeEstimatedGasLimit/pending',
|
||||||
|
);
|
||||||
expect(actionResult[3].type).toStrictEqual(
|
expect(actionResult[3].type).toStrictEqual(
|
||||||
|
'metamask/gas/SET_CUSTOM_GAS_LIMIT',
|
||||||
|
);
|
||||||
|
expect(actionResult[4].type).toStrictEqual(
|
||||||
|
'send/computeEstimatedGasLimit/fulfilled',
|
||||||
|
);
|
||||||
|
expect(actionResult[5].type).toStrictEqual('ENS/resetEnsResolution');
|
||||||
|
expect(actionResult[6].type).toStrictEqual(
|
||||||
'send/validateRecipientUserInput',
|
'send/validateRecipientUserInput',
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user