mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Ensure that editing a tx from a transfer to a simple send resets data and updates type (#15248)
* Ensure that editing a transaction from a transfer to a simple send properly resets data and updates type * Handle case where there are no unapproved txes * Improve comment in updateSendAsset * Remove unnecessary code in send transaction edit function * Fix * Ensure hex data is properly reset when changing from a safe transfer from tx to native send
This commit is contained in:
parent
9e1814952f
commit
a0c9738924
@ -462,7 +462,10 @@ export default class TransactionController extends EventEmitter {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// only update what is defined
|
// only update what is defined
|
||||||
editableParams.txParams = pickBy(editableParams.txParams);
|
editableParams.txParams = pickBy(
|
||||||
|
editableParams.txParams,
|
||||||
|
(prop) => prop !== undefined,
|
||||||
|
);
|
||||||
|
|
||||||
// update transaction type in case it has changes
|
// update transaction type in case it has changes
|
||||||
const transactionBeforeEdit = this._getTransaction(txId);
|
const transactionBeforeEdit = this._getTransaction(txId);
|
||||||
|
@ -937,6 +937,7 @@ const slice = createSlice({
|
|||||||
draftTransaction.asset.type = asset.type;
|
draftTransaction.asset.type = asset.type;
|
||||||
draftTransaction.asset.balance = asset.balance;
|
draftTransaction.asset.balance = asset.balance;
|
||||||
draftTransaction.asset.error = asset.error;
|
draftTransaction.asset.error = asset.error;
|
||||||
|
|
||||||
if (
|
if (
|
||||||
draftTransaction.asset.type === ASSET_TYPES.TOKEN ||
|
draftTransaction.asset.type === ASSET_TYPES.TOKEN ||
|
||||||
draftTransaction.asset.type === ASSET_TYPES.COLLECTIBLE
|
draftTransaction.asset.type === ASSET_TYPES.COLLECTIBLE
|
||||||
@ -1963,6 +1964,9 @@ export function updateSendAsset(
|
|||||||
getSelectedAddress(state);
|
getSelectedAddress(state);
|
||||||
const account = getTargetAccount(state, sendingAddress);
|
const account = getTargetAccount(state, sendingAddress);
|
||||||
if (type === ASSET_TYPES.NATIVE) {
|
if (type === ASSET_TYPES.NATIVE) {
|
||||||
|
const unapprovedTxs = getUnapprovedTxs(state);
|
||||||
|
const unapprovedTx = unapprovedTxs?.[draftTransaction.id];
|
||||||
|
|
||||||
await dispatch(
|
await dispatch(
|
||||||
addHistoryEntry(
|
addHistoryEntry(
|
||||||
`sendFlow - user set asset of type ${
|
`sendFlow - user set asset of type ${
|
||||||
@ -1981,6 +1985,20 @@ export function updateSendAsset(
|
|||||||
initialAssetSet,
|
initialAssetSet,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// This is meant to handle cases where we are editing an unapprovedTx from the background state
|
||||||
|
// and its type is a token method. In such a case, the hex data will be the necessary hex data
|
||||||
|
// for calling the contract transfer method.
|
||||||
|
// Now that we are updating the transaction to be a send of a native asset type, we should
|
||||||
|
// set the hex data of the transaction being editing to be empty.
|
||||||
|
// then the user will not want to send any hex data now that they have change the
|
||||||
|
if (
|
||||||
|
unapprovedTx?.type === TRANSACTION_TYPES.TOKEN_METHOD_TRANSFER_FROM ||
|
||||||
|
unapprovedTx?.type === TRANSACTION_TYPES.TOKEN_METHOD_TRANSFER ||
|
||||||
|
unapprovedTx?.type === TRANSACTION_TYPES.TOKEN_METHOD_SAFE_TRANSFER_FROM
|
||||||
|
) {
|
||||||
|
await dispatch(actions.updateUserInputHexData(''));
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
await dispatch(showLoadingIndication());
|
await dispatch(showLoadingIndication());
|
||||||
const details = {
|
const details = {
|
||||||
@ -2217,8 +2235,10 @@ export function signTransaction() {
|
|||||||
draftTransaction.history,
|
draftTransaction.history,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
dispatch(updateEditableParams(draftTransaction.id, editingTx.txParams));
|
await dispatch(
|
||||||
dispatch(
|
updateEditableParams(draftTransaction.id, editingTx.txParams),
|
||||||
|
);
|
||||||
|
await dispatch(
|
||||||
updateTransactionGasFees(draftTransaction.id, editingTx.txParams),
|
updateTransactionGasFees(draftTransaction.id, editingTx.txParams),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
|
@ -745,7 +745,7 @@ export function updateEditableParams(txId, editableParams) {
|
|||||||
log.error(error.message);
|
log.error(error.message);
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
await forceUpdateMetamaskState(dispatch);
|
||||||
return updatedTransaction;
|
return updatedTransaction;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user