Skip to content

Commit

Permalink
fix(PhoneNumberBox): sfoxExchangeData, and SecurityCenter pass countr…
Browse files Browse the repository at this point in the history
…yCode
  • Loading branch information
plondon committed Jun 8, 2018
1 parent a6d15e2 commit e1d91ce
Show file tree
Hide file tree
Showing 9 changed files with 64 additions and 20 deletions.
@@ -1,6 +1,7 @@
import React from 'react'
import styled from 'styled-components'
import { prop, toLower } from 'ramda'
import { propTypes } from 'prop-types'

import IntlTelInput from 'react-intl-tel-input'
import 'react-intl-tel-input/dist/libphonenumber.js'
Expand Down Expand Up @@ -45,4 +46,8 @@ const PhoneNumberBox = (field) => {
)
}

PhoneNumberBox.PropTypes = {
countryCode: propTypes.required
}

export default PhoneNumberBox
Expand Up @@ -15,18 +15,18 @@ class MobileNumberChangeContainer extends React.PureComponent {

onSubmit (e) {
e.preventDefault()
const { mobileNumber } = this.props
this.props.settingsActions.updateMobile(mobileNumber)
const { smsNumberNew } = this.props
this.props.settingsActions.updateMobile(smsNumberNew)
this.props.modalActions.closeModal()
this.props.modalActions.showModal('MobileNumberVerify', { mobileNumber })
this.props.modalActions.showModal('MobileNumberVerify', { smsNumberNew })
}

render () {
const { countryCode, mobileNumber } = this.props
const { countryCode, smsNumber } = this.props
return <MobileNumberChange
{...this.props}
smsNumber={smsNumber}
countryCode={countryCode}
mobileNumber={mobileNumber}
onSubmit={this.onSubmit} />
}
}
Expand Down
Expand Up @@ -14,7 +14,8 @@ export const getData = (state) => createDeepEqualSelector(
selectors.core.settings.getCountryCode
],
(currentNumber, defaultCode) => ({
mobileNumber: formValueSelector('mobileNumberChange')(state, 'mobileNumber'),
countryCode: lift(getCountryCode)(defaultCode, currentNumber)
smsNumberNew: formValueSelector('mobileNumberChange')(state, 'mobileNumber'),
countryCode: lift(getCountryCode)(defaultCode, currentNumber),
smsNumber: currentNumber.getOrElse('')
})
)(state)
Expand Up @@ -18,7 +18,7 @@ const MobileNumber = styled.div`
`

const MobileNumberChange = (props) => {
const { position, total, close, closeAll, submitting, invalid, pristine, countryCode, ...rest } = props
const { position, total, close, closeAll, submitting, invalid, pristine, countryCode, smsNumber, ...rest } = props
const { onSubmit } = rest

return (
Expand All @@ -35,7 +35,7 @@ const MobileNumberChange = (props) => {
<Text size='14px' weight={300} style={spacing('pr-5')}>
<FormattedMessage id='modals.mobilenumberchange.mobile' defaultMessage='Mobile number: ' />
</Text>
<Field name='mobileNumber' validate={[validMobileNumber, required]} component={PhoneNumberBox} countryCode={countryCode} />
<Field name='mobileNumber' validate={[validMobileNumber, required]} component={PhoneNumberBox} countryCode={countryCode} defaultValue={smsNumber} />
</MobileNumber>
</ModalBody>
<ModalFooter align='spaced'>
Expand Down
Expand Up @@ -86,7 +86,7 @@ class VerifyMobile extends Component {
<Text size='14px' weight={400} style={{'marginBottom': '5px'}}>
<FormattedMessage id='sfoxexchangedata.create.mobile.entermobilenumber' defaultMessage='Enter your digits here:' />
</Text>
<Field name='mobileNumber' defaultValue={this.props.smsNumber} component={PhoneNumberBox} validate={[required, validMobileNumber]} normalize={normalizePhone} />
<Field name='mobileNumber' countryCode={this.props.countryCode} defaultValue={this.props.smsNumber} component={PhoneNumberBox} validate={[required, validMobileNumber]} normalize={normalizePhone} />
{
ui.create === 'change_mobile' && <Button nature='primary' type='submit' disabled={!mobileNumber} style={spacing('mt-15')}>
<FormattedMessage id='sfoxexchangedata.create.mobile.sendmycode' defaultMessage='Send My Code' />
Expand Down
Expand Up @@ -6,6 +6,7 @@ import Create from './template'
import { actions, selectors } from 'data'
import ui from 'redux-ui'
import { path } from 'ramda'
import { getData } from './selectors'

class CreateContainer extends Component {
constructor (props) {
Expand All @@ -23,6 +24,7 @@ class CreateContainer extends Component {

render () {
return <Create
countryCode={this.props.data.countryCode}
editEmail={() => { this.props.updateUI({ create: 'change_email' }); this.setState({ editVerifiedEmail: true }) }}
editMobile={() => { this.props.updateUI({ create: 'change_mobile' }); this.setState({ editVerifiedMobile: true }) }}
editVerifiedEmail={this.state.editVerifiedEmail}
Expand All @@ -40,6 +42,7 @@ CreateContainer.propTypes = {
}

const mapStateToProps = (state) => ({
data: getData(state),
smsVerified: selectors.core.settings.getSmsVerified(state).data,
emailVerified: selectors.core.settings.getEmailVerified(state).data,
emailVerifiedError: path(['securityCenter', 'emailVerifiedError'], state),
Expand Down
@@ -0,0 +1,18 @@
import PhoneNumber from 'awesome-phonenumber'
import { lift } from 'ramda'

import { selectors } from 'data'
import { createDeepEqualSelector } from 'services/ReselectHelper'

const getCountryCode = (defaultCode, currentNumber) =>
currentNumber ? PhoneNumber(currentNumber).getRegionCode() : defaultCode

export const getData = (state) => createDeepEqualSelector(
[
selectors.core.settings.getSmsNumber,
selectors.core.settings.getCountryCode
],
(currentNumber, defaultCode) => ({
countryCode: lift(getCountryCode)(defaultCode, currentNumber)
})
)(state)
@@ -1,12 +1,29 @@
import { selectors } from 'data'
import PhoneNumber from 'awesome-phonenumber'
import { lift } from 'ramda'

export const getData = state => {
const authType = selectors.core.settings.getAuthType(state)
const smsNumber = selectors.core.settings.getSmsNumber(state)
const smsVerified = selectors.core.settings.getSmsVerified(state)
import { selectors } from 'data'
import { createDeepEqualSelector } from 'services/ReselectHelper'

const f = (a, n, v) => ({ authType: parseInt(a), smsNumber: n, smsVerified: v })
const getCountryCode = (defaultCode, currentNumber) =>
currentNumber ? PhoneNumber(currentNumber).getRegionCode() : defaultCode

return lift(f)(authType, smsNumber, smsVerified)
}
export const getData = (state) => createDeepEqualSelector(
[
selectors.core.settings.getAuthType,
selectors.core.settings.getSmsNumber,
selectors.core.settings.getSmsVerified,
selectors.core.settings.getSmsNumber,
selectors.core.settings.getCountryCode
],
(authTypeR, smsNumberR, smsVerifiedR, currentNumber, defaultCode) => {
const transform = (authType, smsNumber, smsVerified) => {
return {
countryCode: lift(getCountryCode)(defaultCode, currentNumber),
authType: parseInt(authType),
smsVerified,
smsNumber
}
}
return lift(transform)(authTypeR, smsNumberR, smsVerifiedR)
}
)(state)
Expand Up @@ -41,7 +41,7 @@ const QRInputWrapper = styled.div`

const SmsAuth = props => {
const { data, ui, onSubmit, changeMobileNumber, invalid, code } = props
const { smsVerified, smsNumber } = data
const { smsVerified, smsNumber, countryCode } = data

return (
<Form onSubmit={onSubmit}>
Expand All @@ -60,7 +60,7 @@ const SmsAuth = props => {
<FormattedMessage id='scenes.security.twostepverification.sms.entermobile' defaultMessage='Enter your mobile number and click Get Code. A verification code will be sent.' />
</Text>
<QRInputWrapper>
<Field name='mobileNumber' component={PhoneNumberBox} validate={[required]} placeholder='212-555-5555' />
<Field name='mobileNumber' component={PhoneNumberBox} validate={[required]} countryCode={countryCode} defaultValue={smsNumber} placeholder='212-555-5555' />
<Button type='submit' nature='primary' disabled={invalid}>Get Verification Code</Button>
</QRInputWrapper>
</Fragment>
Expand Down

0 comments on commit e1d91ce

Please sign in to comment.