fix: Update email action should hit API
This commit is contained in:
@ -22,6 +22,7 @@ const propTypes = {
|
|||||||
replace: PropTypes.bool,
|
replace: PropTypes.bool,
|
||||||
routesMap: PropTypes.object,
|
routesMap: PropTypes.object,
|
||||||
shouldDispatch: PropTypes.bool,
|
shouldDispatch: PropTypes.bool,
|
||||||
|
style: PropTypes.object,
|
||||||
target: PropTypes.string,
|
target: PropTypes.string,
|
||||||
to: PropTypes.oneOfType([ PropTypes.object, PropTypes.string ]).isRequired
|
to: PropTypes.oneOfType([ PropTypes.object, PropTypes.string ]).isRequired
|
||||||
};
|
};
|
||||||
@ -36,6 +37,7 @@ export const Link = (
|
|||||||
replace,
|
replace,
|
||||||
routesMap,
|
routesMap,
|
||||||
shouldDispatch = true,
|
shouldDispatch = true,
|
||||||
|
style,
|
||||||
target,
|
target,
|
||||||
to
|
to
|
||||||
}
|
}
|
||||||
@ -70,6 +72,7 @@ export const Link = (
|
|||||||
return (
|
return (
|
||||||
<a
|
<a
|
||||||
onClick={ handler }
|
onClick={ handler }
|
||||||
|
style={ style }
|
||||||
{ ...localProps }
|
{ ...localProps }
|
||||||
>
|
>
|
||||||
{children}
|
{children}
|
||||||
|
@ -24,7 +24,7 @@ export const updateUserFlag = createAction(
|
|||||||
);
|
);
|
||||||
// updateUserEmail(username: String, email: String) => Action
|
// updateUserEmail(username: String, email: String) => Action
|
||||||
export const updateUserEmail = createAction(
|
export const updateUserEmail = createAction(
|
||||||
types.updateUserFlag,
|
types.updateUserEmail,
|
||||||
(username, email) => ({ username, email })
|
(username, email) => ({ username, email })
|
||||||
);
|
);
|
||||||
// updateUserLang(username: String, lang: String) => Action
|
// updateUserLang(username: String, lang: String) => Action
|
||||||
|
@ -184,7 +184,7 @@ export class Settings extends React.Component {
|
|||||||
className='btn-link-social'
|
className='btn-link-social'
|
||||||
onClick={ toggleNightMode }
|
onClick={ toggleNightMode }
|
||||||
>
|
>
|
||||||
NightMode
|
Toggle Night Mode
|
||||||
</Button>
|
</Button>
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
|
@ -6,7 +6,6 @@ import { makeToast } from '../../../Toasts/redux';
|
|||||||
import {
|
import {
|
||||||
fetchChallenges,
|
fetchChallenges,
|
||||||
doActionOnError,
|
doActionOnError,
|
||||||
|
|
||||||
userSelector
|
userSelector
|
||||||
} from '../../../redux';
|
} from '../../../redux';
|
||||||
import {
|
import {
|
||||||
@ -41,7 +40,7 @@ export function updateUserEmailEpic(actions, { getState }) {
|
|||||||
const ajaxUpdate = postJSON$('/update-my-email', body)
|
const ajaxUpdate = postJSON$('/update-my-email', body)
|
||||||
.map(({ message }) => makeToast({ message }))
|
.map(({ message }) => makeToast({ message }))
|
||||||
.catch(doActionOnError(() => oldEmail ?
|
.catch(doActionOnError(() => oldEmail ?
|
||||||
updateUserFlag(username, oldEmail) :
|
updateUserEmail(username, oldEmail) :
|
||||||
null
|
null
|
||||||
));
|
));
|
||||||
return Observable.merge(optimisticUpdate, ajaxUpdate);
|
return Observable.merge(optimisticUpdate, ajaxUpdate);
|
||||||
|
@ -12,7 +12,7 @@ import { reduxForm } from 'redux-form';
|
|||||||
import { isEmail } from 'validator';
|
import { isEmail } from 'validator';
|
||||||
|
|
||||||
import { Link } from '../../../../Router';
|
import { Link } from '../../../../Router';
|
||||||
import { getValidationState } from '../../../../utils/form';
|
import { getValidationState, DOMOnlyProps } from '../../../../utils/form';
|
||||||
import {
|
import {
|
||||||
onRouteSettings,
|
onRouteSettings,
|
||||||
updateMyEmail
|
updateMyEmail
|
||||||
@ -93,10 +93,10 @@ export class UpdateEmail extends React.Component {
|
|||||||
validationState={ getValidationState(email) }
|
validationState={ getValidationState(email) }
|
||||||
>
|
>
|
||||||
<FormControl
|
<FormControl
|
||||||
autofocus={ true }
|
autoFocus={ true }
|
||||||
placeholder='Enter your new email'
|
placeholder='Enter your new email'
|
||||||
type='email'
|
type='email'
|
||||||
{ ...email }
|
{ ...DOMOnlyProps(email) }
|
||||||
/>
|
/>
|
||||||
{
|
{
|
||||||
!email.error ?
|
!email.error ?
|
||||||
@ -112,7 +112,7 @@ export class UpdateEmail extends React.Component {
|
|||||||
<FormControl
|
<FormControl
|
||||||
placeholder='re-type your email address'
|
placeholder='re-type your email address'
|
||||||
type='email'
|
type='email'
|
||||||
{ ...duplicate }
|
{ ...DOMOnlyProps(duplicate) }
|
||||||
/>
|
/>
|
||||||
{
|
{
|
||||||
!duplicate.error ?
|
!duplicate.error ?
|
||||||
@ -131,7 +131,10 @@ export class UpdateEmail extends React.Component {
|
|||||||
{ buttonCopy }
|
{ buttonCopy }
|
||||||
</Button>
|
</Button>
|
||||||
<div className='button-spacer' />
|
<div className='button-spacer' />
|
||||||
<Link to={ onRouteSettings() }>
|
<Link
|
||||||
|
style={{ textDecoration: 'none' }}
|
||||||
|
to={ onRouteSettings() }
|
||||||
|
>
|
||||||
<Button
|
<Button
|
||||||
block={ true }
|
block={ true }
|
||||||
bsSize='lg'
|
bsSize='lg'
|
||||||
|
@ -574,6 +574,7 @@ module.exports = function(User) {
|
|||||||
) {
|
) {
|
||||||
const ownEmail = newEmail === this.email;
|
const ownEmail = newEmail === this.email;
|
||||||
if (!isEmail('' + newEmail)) {
|
if (!isEmail('' + newEmail)) {
|
||||||
|
debug('invalid email:', newEmail );
|
||||||
return Observable.throw(createEmailError());
|
return Observable.throw(createEmailError());
|
||||||
}
|
}
|
||||||
// email is already associated and verified with this account
|
// email is already associated and verified with this account
|
||||||
|
Reference in New Issue
Block a user