Improve sign-up process for new users
This commit is contained in:
@@ -1,56 +1,76 @@
|
||||
import React from 'react'
|
||||
import { api } from 'src/API'
|
||||
import PropTypes from 'prop-types'
|
||||
import { MessageModal, WaitModal } from '../Modal'
|
||||
import autobind from 'autobind-decorator'
|
||||
import React from "react"
|
||||
import { api } from "src/API"
|
||||
import PropTypes from "prop-types"
|
||||
import { MessageModal, WaitModal } from "../Modal"
|
||||
import autobind from "autobind-decorator"
|
||||
|
||||
export class ConfirmEmail extends React.Component {
|
||||
static propTypes = {
|
||||
history: PropTypes.oneOfType([PropTypes.array, PropTypes.object])
|
||||
history: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),
|
||||
}
|
||||
|
||||
constructor() {
|
||||
super()
|
||||
this.state = {
|
||||
waitModal: null,
|
||||
messageModal: null
|
||||
messageModal: null,
|
||||
}
|
||||
}
|
||||
|
||||
componentDidMount(props) {
|
||||
const emailToken = new URLSearchParams(decodeURIComponent(window.location.search)).get('email-token')
|
||||
const emailToken = new URLSearchParams(
|
||||
decodeURIComponent(window.location.search)
|
||||
).get("email-token")
|
||||
|
||||
this.setState({ waitModal: { message: "Validating Email..." } })
|
||||
|
||||
this.setState({ waitModal: { message: 'Validating Email...' } })
|
||||
if (emailToken) {
|
||||
api.logout().then(() => {
|
||||
return api.confirmEmail(emailToken)
|
||||
}).then((response) => {
|
||||
this.setState({ waitModal: null })
|
||||
if (response && response.passwordToken) {
|
||||
// API will send a password reset token if this is the first time loggin on
|
||||
this.props.history.replace(`/reset-password?password-token=${response.passwordToken}`)
|
||||
} else {
|
||||
this.props.history.replace('/login')
|
||||
}
|
||||
}).catch((err) => {
|
||||
this.setState({
|
||||
waitModal: null,
|
||||
messageModal: {
|
||||
icon: 'hand',
|
||||
message: `Please contact ${process.env.REACT_APP_SUPPORT_EMAIL} to request another confirmation email.`,
|
||||
detail: err.message
|
||||
api
|
||||
.logout()
|
||||
.then(() => {
|
||||
return api.confirmEmail(emailToken)
|
||||
})
|
||||
.then((response) => {
|
||||
this.setState({ waitModal: null })
|
||||
if (response && response.passwordToken) {
|
||||
this.setState({
|
||||
waitModal: null,
|
||||
messageModal: {
|
||||
icon: "thumb",
|
||||
message: `Your email is confirmed. You will be redirected to set your password.`,
|
||||
// API will send a password reset token if this is the first time loggin on
|
||||
redirect: `/reset-password?password-token=${
|
||||
response.passwordToken
|
||||
}`,
|
||||
},
|
||||
})
|
||||
} else {
|
||||
this.props.history.replace("/login")
|
||||
}
|
||||
})
|
||||
})
|
||||
.catch((err) => {
|
||||
this.setState({
|
||||
waitModal: null,
|
||||
messageModal: {
|
||||
icon: "hand",
|
||||
message: `Please contact ${
|
||||
process.env.REACT_APP_SUPPORT_EMAIL
|
||||
} to request another confirmation email.`,
|
||||
detail: err.message,
|
||||
},
|
||||
})
|
||||
})
|
||||
} else {
|
||||
this.props.history.replace('/')
|
||||
this.props.history.replace("/")
|
||||
}
|
||||
}
|
||||
|
||||
@autobind
|
||||
handleMessageModalDismiss() {
|
||||
const { redirect } = this.state.messageModal
|
||||
|
||||
this.setState({ messageModal: null })
|
||||
this.props.history.replace('/login')
|
||||
this.props.history.replace(redirect || "/login")
|
||||
}
|
||||
|
||||
render() {
|
||||
@@ -60,14 +80,16 @@ export class ConfirmEmail extends React.Component {
|
||||
<div>
|
||||
<WaitModal
|
||||
active={!!waitModal}
|
||||
message={waitModal ? waitModal.message : ''} />
|
||||
message={waitModal ? waitModal.message : ""}
|
||||
/>
|
||||
|
||||
<MessageModal
|
||||
open={!!messageModal}
|
||||
icon={messageModal ? messageModal.icon : ''}
|
||||
message={messageModal ? messageModal.message : ''}
|
||||
detail={messageModal ? messageModal.title : ''}
|
||||
onDismiss={this.handleMessageModalDismiss} />
|
||||
icon={messageModal ? messageModal.icon : ""}
|
||||
message={messageModal ? messageModal.message : ""}
|
||||
detail={messageModal ? messageModal.title : ""}
|
||||
onDismiss={this.handleMessageModalDismiss}
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user