mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Display correct titles and subtitles on send token and editing send transaction screens.
This commit is contained in:
parent
1405237479
commit
5bb399e55a
@ -253,6 +253,9 @@
|
|||||||
"editAccountName": {
|
"editAccountName": {
|
||||||
"message": "Edit Account Name"
|
"message": "Edit Account Name"
|
||||||
},
|
},
|
||||||
|
"editingTransaction": {
|
||||||
|
"message": "Make changes to your transaction"
|
||||||
|
},
|
||||||
"emailUs": {
|
"emailUs": {
|
||||||
"message": "Email us!"
|
"message": "Email us!"
|
||||||
},
|
},
|
||||||
@ -756,6 +759,10 @@
|
|||||||
"onlySendToEtherAddress": {
|
"onlySendToEtherAddress": {
|
||||||
"message": "Only send ETH to an Ethereum address."
|
"message": "Only send ETH to an Ethereum address."
|
||||||
},
|
},
|
||||||
|
"onlySendTokensToAccountAddress": {
|
||||||
|
"message": "Only send $1 to an Ethereum account address.",
|
||||||
|
"description": "displays token symbol"
|
||||||
|
},
|
||||||
"searchTokens": {
|
"searchTokens": {
|
||||||
"message": "Search Tokens"
|
"message": "Search Tokens"
|
||||||
},
|
},
|
||||||
|
@ -107,7 +107,7 @@ function mapDispatchToProps (dispatch, ownProps) {
|
|||||||
to,
|
to,
|
||||||
amount: tokenAmountInHex,
|
amount: tokenAmountInHex,
|
||||||
errors: { to: null, amount: null },
|
errors: { to: null, amount: null },
|
||||||
editingTransactionId: id,
|
editingTransactionId: id && id.toString(),
|
||||||
token: ownProps.token,
|
token: ownProps.token,
|
||||||
}))
|
}))
|
||||||
dispatch(actions.showSendTokenPage())
|
dispatch(actions.showSendTokenPage())
|
||||||
|
@ -8,7 +8,8 @@ export default class SendHeader extends Component {
|
|||||||
static propTypes = {
|
static propTypes = {
|
||||||
clearSend: PropTypes.func,
|
clearSend: PropTypes.func,
|
||||||
history: PropTypes.object,
|
history: PropTypes.object,
|
||||||
isToken: PropTypes.bool,
|
titleKey: PropTypes.string,
|
||||||
|
subtitleParams: PropTypes.array,
|
||||||
};
|
};
|
||||||
|
|
||||||
onClose () {
|
onClose () {
|
||||||
@ -20,8 +21,8 @@ export default class SendHeader extends Component {
|
|||||||
return (
|
return (
|
||||||
<PageContainerHeader
|
<PageContainerHeader
|
||||||
onClose={() => this.onClose()}
|
onClose={() => this.onClose()}
|
||||||
subtitle={this.context.t('onlySendToEtherAddress')}
|
subtitle={this.context.t(...this.props.subtitleParams)}
|
||||||
title={this.props.isToken ? this.context.t('sendTokens') : this.context.t('sendETH')}
|
title={this.context.t(this.props.titleKey)}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
import { connect } from 'react-redux'
|
import { connect } from 'react-redux'
|
||||||
import { clearSend } from '../../../actions'
|
import { clearSend } from '../../../actions'
|
||||||
import SendHeader from './send-header.component'
|
import SendHeader from './send-header.component'
|
||||||
import { getSelectedToken } from '../../../selectors'
|
import { getSubtitleParams, getTitleKey } from './send-header.selectors'
|
||||||
|
|
||||||
export default connect(mapStateToProps, mapDispatchToProps)(SendHeader)
|
export default connect(mapStateToProps, mapDispatchToProps)(SendHeader)
|
||||||
|
|
||||||
function mapStateToProps (state) {
|
function mapStateToProps (state) {
|
||||||
return {
|
return {
|
||||||
isToken: Boolean(getSelectedToken(state)),
|
titleKey: getTitleKey(state),
|
||||||
|
subtitleParams: getSubtitleParams(state),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
37
ui/app/components/send_/send-header/send-header.selectors.js
Normal file
37
ui/app/components/send_/send-header/send-header.selectors.js
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
const {
|
||||||
|
getSelectedToken,
|
||||||
|
getSendEditingTransactionId,
|
||||||
|
} = require('../send.selectors.js')
|
||||||
|
|
||||||
|
const selectors = {
|
||||||
|
getTitleKey,
|
||||||
|
getSubtitleParams,
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = selectors
|
||||||
|
|
||||||
|
function getTitleKey (state) {
|
||||||
|
const isEditing = Boolean(getSendEditingTransactionId(state))
|
||||||
|
const isToken = Boolean(getSelectedToken(state))
|
||||||
|
|
||||||
|
if (isEditing) {
|
||||||
|
return 'edit'
|
||||||
|
} else if (isToken) {
|
||||||
|
return 'sendTokens'
|
||||||
|
} else {
|
||||||
|
return 'sendETH'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getSubtitleParams (state) {
|
||||||
|
const isEditing = Boolean(getSendEditingTransactionId(state))
|
||||||
|
const token = getSelectedToken(state)
|
||||||
|
|
||||||
|
if (isEditing) {
|
||||||
|
return [ 'editingTransaction' ]
|
||||||
|
} else if (token) {
|
||||||
|
return [ 'onlySendTokensToAccountAddress', [ token.symbol ] ]
|
||||||
|
} else {
|
||||||
|
return [ 'onlySendToEtherAddress' ]
|
||||||
|
}
|
||||||
|
}
|
@ -23,8 +23,9 @@ describe('SendHeader Component', function () {
|
|||||||
wrapper = shallow(<SendHeader
|
wrapper = shallow(<SendHeader
|
||||||
clearSend={propsMethodSpies.clearSend}
|
clearSend={propsMethodSpies.clearSend}
|
||||||
history={historySpies}
|
history={historySpies}
|
||||||
isToken={false}
|
titleKey={'mockTitleKey'}
|
||||||
/>, { context: { t: str => str } })
|
subtitleParams={[ 'mockSubtitleKey', 'mockVal']}
|
||||||
|
/>, { context: { t: (str1, str2) => str2 ? str1 + str2 : str1 } })
|
||||||
})
|
})
|
||||||
|
|
||||||
afterEach(() => {
|
afterEach(() => {
|
||||||
@ -59,8 +60,8 @@ describe('SendHeader Component', function () {
|
|||||||
subtitle,
|
subtitle,
|
||||||
title,
|
title,
|
||||||
} = wrapper.find(PageContainerHeader).props()
|
} = wrapper.find(PageContainerHeader).props()
|
||||||
assert.equal(subtitle, 'onlySendToEtherAddress')
|
assert.equal(subtitle, 'mockSubtitleKeymockVal')
|
||||||
assert.equal(title, 'sendETH')
|
assert.equal(title, 'mockTitleKey')
|
||||||
assert.equal(SendHeader.prototype.onClose.callCount, 0)
|
assert.equal(SendHeader.prototype.onClose.callCount, 0)
|
||||||
onClose()
|
onClose()
|
||||||
assert.equal(SendHeader.prototype.onClose.callCount, 1)
|
assert.equal(SendHeader.prototype.onClose.callCount, 1)
|
||||||
|
@ -18,7 +18,10 @@ proxyquire('../send-header.container.js', {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
'../../../actions': actionSpies,
|
'../../../actions': actionSpies,
|
||||||
'../../../selectors': { getSelectedToken: (s) => `mockSelectedToken:${s}` },
|
'./send-header.selectors': {
|
||||||
|
getTitleKey: (s) => `mockTitleKey:${s}`,
|
||||||
|
getSubtitleParams: (s) => `mockSubtitleParams:${s}`,
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('send-header container', () => {
|
describe('send-header container', () => {
|
||||||
@ -27,7 +30,8 @@ describe('send-header container', () => {
|
|||||||
|
|
||||||
it('should map the correct properties to props', () => {
|
it('should map the correct properties to props', () => {
|
||||||
assert.deepEqual(mapStateToProps('mockState'), {
|
assert.deepEqual(mapStateToProps('mockState'), {
|
||||||
isToken: true,
|
titleKey: 'mockTitleKey:mockState',
|
||||||
|
subtitleParams: 'mockSubtitleParams:mockState',
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -0,0 +1,47 @@
|
|||||||
|
import assert from 'assert'
|
||||||
|
import proxyquire from 'proxyquire'
|
||||||
|
|
||||||
|
const {
|
||||||
|
getTitleKey,
|
||||||
|
getSubtitleParams,
|
||||||
|
} = proxyquire('../send-header.selectors', {
|
||||||
|
'../send.selectors': {
|
||||||
|
getSelectedToken: (mockState) => mockState.t,
|
||||||
|
getSendEditingTransactionId: (mockState) => mockState.e,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('send-header selectors', () => {
|
||||||
|
|
||||||
|
describe('getTitleKey()', () => {
|
||||||
|
it('should return the correct key when getSendEditingTransactionId is truthy', () => {
|
||||||
|
assert.equal(getTitleKey({ e: 1, t: true }), 'edit')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should return the correct key when getSendEditingTransactionId is falsy and getSelectedToken is truthy', () => {
|
||||||
|
assert.equal(getTitleKey({ e: null, t: 'abc' }), 'sendTokens')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should return the correct key when getSendEditingTransactionId is falsy and getSelectedToken is falsy', () => {
|
||||||
|
assert.equal(getTitleKey({ e: null }), 'sendETH')
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('getSubtitleParams()', () => {
|
||||||
|
it('should return the correct params when getSendEditingTransactionId is truthy', () => {
|
||||||
|
assert.deepEqual(getSubtitleParams({ e: 1, t: true }), [ 'editingTransaction' ])
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should return the correct params when getSendEditingTransactionId is falsy and getSelectedToken is truthy', () => {
|
||||||
|
assert.deepEqual(
|
||||||
|
getSubtitleParams({ e: null, t: { symbol: 'ABC' } }),
|
||||||
|
[ 'onlySendTokensToAccountAddress', [ 'ABC' ] ]
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should return the correct params when getSendEditingTransactionId is falsy and getSelectedToken is falsy', () => {
|
||||||
|
assert.deepEqual(getSubtitleParams({ e: null }), [ 'onlySendToEtherAddress' ])
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
@ -82,7 +82,7 @@ export default class SendTransactionScreen extends PersistentForm {
|
|||||||
} = prevProps
|
} = prevProps
|
||||||
|
|
||||||
const uninitialized = [prevBalance, prevGasTotal].every(n => n === null)
|
const uninitialized = [prevBalance, prevGasTotal].every(n => n === null)
|
||||||
console.log(`@#@# uninitialized`, uninitialized);
|
|
||||||
if (!uninitialized) {
|
if (!uninitialized) {
|
||||||
const amountErrorRequiresUpdate = doesAmountErrorRequireUpdate({
|
const amountErrorRequiresUpdate = doesAmountErrorRequireUpdate({
|
||||||
balance,
|
balance,
|
||||||
@ -121,7 +121,7 @@ export default class SendTransactionScreen extends PersistentForm {
|
|||||||
|
|
||||||
componentWillMount () {
|
componentWillMount () {
|
||||||
const {
|
const {
|
||||||
from: { address, balance },
|
from: { address },
|
||||||
selectedToken,
|
selectedToken,
|
||||||
tokenContract,
|
tokenContract,
|
||||||
updateSendTokenBalance,
|
updateSendTokenBalance,
|
||||||
|
Loading…
Reference in New Issue
Block a user