mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
On send screen amount change, updateGas call now includes current to address.
This commit is contained in:
parent
70abe54c94
commit
ac7c0277b5
@ -3,6 +3,7 @@ import PropTypes from 'prop-types'
|
||||
import PersistentForm from '../../../lib/persistent-form'
|
||||
import {
|
||||
getAmountErrorObject,
|
||||
getToAddressForGasUpdate,
|
||||
doesAmountErrorRequireUpdate,
|
||||
} from './send.utils'
|
||||
|
||||
@ -38,7 +39,7 @@ export default class SendTransactionScreen extends PersistentForm {
|
||||
updateSendTokenBalance: PropTypes.func,
|
||||
};
|
||||
|
||||
updateGas ({ to, amount: value } = {}) {
|
||||
updateGas ({ to: updatedToAddress, amount: value } = {}) {
|
||||
const {
|
||||
amount,
|
||||
blockGasLimit,
|
||||
@ -48,6 +49,7 @@ export default class SendTransactionScreen extends PersistentForm {
|
||||
recentBlocks,
|
||||
selectedAddress,
|
||||
selectedToken = {},
|
||||
to: currentToAddress,
|
||||
updateAndSetGasTotal,
|
||||
} = this.props
|
||||
|
||||
@ -59,7 +61,7 @@ export default class SendTransactionScreen extends PersistentForm {
|
||||
recentBlocks,
|
||||
selectedAddress,
|
||||
selectedToken,
|
||||
to: to && to.toLowerCase(),
|
||||
to: getToAddressForGasUpdate(updatedToAddress, currentToAddress),
|
||||
value: value || amount,
|
||||
})
|
||||
}
|
||||
|
@ -19,6 +19,7 @@ import {
|
||||
getSendAmount,
|
||||
getSendEditingTransactionId,
|
||||
getSendFromObject,
|
||||
getSendTo,
|
||||
getTokenBalance,
|
||||
} from './send.selectors'
|
||||
import {
|
||||
@ -54,6 +55,7 @@ function mapStateToProps (state) {
|
||||
recentBlocks: getRecentBlocks(state),
|
||||
selectedAddress: getSelectedAddress(state),
|
||||
selectedToken: getSelectedToken(state),
|
||||
to: getSendTo(state),
|
||||
tokenBalance: getTokenBalance(state),
|
||||
tokenContract: getSelectedTokenContract(state),
|
||||
tokenToFiatRate: getSelectedTokenToFiatRate(state),
|
||||
|
@ -29,6 +29,7 @@ module.exports = {
|
||||
estimateGasPriceFromRecentBlocks,
|
||||
generateTokenTransferData,
|
||||
getAmountErrorObject,
|
||||
getToAddressForGasUpdate,
|
||||
isBalanceSufficient,
|
||||
isTokenBalanceSufficient,
|
||||
}
|
||||
@ -268,3 +269,7 @@ function estimateGasPriceFromRecentBlocks (recentBlocks) {
|
||||
|
||||
return lowestPrices[Math.floor(lowestPrices.length / 2)]
|
||||
}
|
||||
|
||||
function getToAddressForGasUpdate (...addresses) {
|
||||
return [...addresses, ''].find(str => str !== undefined && str !== null).toLowerCase()
|
||||
}
|
||||
|
@ -201,7 +201,7 @@ describe('Send Component', function () {
|
||||
})
|
||||
|
||||
describe('updateGas', () => {
|
||||
it('should call updateAndSetGasTotal with the correct params', () => {
|
||||
it('should call updateAndSetGasTotal with the correct params if no to prop is passed', () => {
|
||||
propsMethodSpies.updateAndSetGasTotal.resetHistory()
|
||||
wrapper.instance().updateGas()
|
||||
assert.equal(propsMethodSpies.updateAndSetGasTotal.callCount, 1)
|
||||
@ -215,12 +215,22 @@ describe('Send Component', function () {
|
||||
recentBlocks: ['mockBlock'],
|
||||
selectedAddress: 'mockSelectedAddress',
|
||||
selectedToken: 'mockSelectedToken',
|
||||
to: undefined,
|
||||
to: '',
|
||||
value: 'mockAmount',
|
||||
}
|
||||
)
|
||||
})
|
||||
|
||||
it('should call updateAndSetGasTotal with the correct params if a to prop is passed', () => {
|
||||
propsMethodSpies.updateAndSetGasTotal.resetHistory()
|
||||
wrapper.setProps({ to: 'someAddress' })
|
||||
wrapper.instance().updateGas()
|
||||
assert.equal(
|
||||
propsMethodSpies.updateAndSetGasTotal.getCall(0).args[0].to,
|
||||
'someaddress',
|
||||
)
|
||||
})
|
||||
|
||||
it('should call updateAndSetGasTotal with to set to lowercase if passed', () => {
|
||||
propsMethodSpies.updateAndSetGasTotal.resetHistory()
|
||||
wrapper.instance().updateGas({ to: '0xABC' })
|
||||
|
@ -39,6 +39,7 @@ proxyquire('../send.container.js', {
|
||||
getSelectedTokenContract: (s) => `mockTokenContract:${s}`,
|
||||
getSelectedTokenToFiatRate: (s) => `mockTokenToFiatRate:${s}`,
|
||||
getSendAmount: (s) => `mockAmount:${s}`,
|
||||
getSendTo: (s) => `mockTo:${s}`,
|
||||
getSendEditingTransactionId: (s) => `mockEditingTransactionId:${s}`,
|
||||
getSendFromObject: (s) => `mockFrom:${s}`,
|
||||
getTokenBalance: (s) => `mockTokenBalance:${s}`,
|
||||
@ -70,6 +71,7 @@ describe('send container', () => {
|
||||
recentBlocks: 'mockRecentBlocks:mockState',
|
||||
selectedAddress: 'mockSelectedAddress:mockState',
|
||||
selectedToken: 'mockSelectedToken:mockState',
|
||||
to: 'mockTo:mockState',
|
||||
tokenBalance: 'mockTokenBalance:mockState',
|
||||
tokenContract: 'mockTokenContract:mockState',
|
||||
tokenToFiatRate: 'mockTokenToFiatRate:mockState',
|
||||
|
@ -48,6 +48,7 @@ const {
|
||||
estimateGasPriceFromRecentBlocks,
|
||||
generateTokenTransferData,
|
||||
getAmountErrorObject,
|
||||
getToAddressForGasUpdate,
|
||||
calcTokenBalance,
|
||||
isBalanceSufficient,
|
||||
isTokenBalanceSufficient,
|
||||
@ -421,4 +422,15 @@ describe('send utils', () => {
|
||||
assert.equal(estimateGasPriceFromRecentBlocks(mockRecentBlocks), '0x5')
|
||||
})
|
||||
})
|
||||
|
||||
describe('getToAddressForGasUpdate()', () => {
|
||||
it('should return empty string if all params are undefined or null', () => {
|
||||
assert.equal(getToAddressForGasUpdate(undefined, null), '')
|
||||
})
|
||||
|
||||
it('should return the first string that is not defined or null in lower case', () => {
|
||||
assert.equal(getToAddressForGasUpdate('A', null), 'a')
|
||||
assert.equal(getToAddressForGasUpdate(undefined, 'B'), 'b')
|
||||
})
|
||||
})
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user