import React from 'react'; // jshint ignore:line import ReactDOM from 'react-dom'; // jshint ignore:line import misago from 'misago/index'; import Button from 'misago/components/button'; // jshint ignore:line import Form from 'misago/components/form'; import ajax from 'misago/services/ajax'; import snackbar from 'misago/services/snackbar'; import * as validators from 'misago/utils/validators'; import showBannedPage from 'misago/utils/banned-page'; export class RequestResetForm extends Form { constructor(props) { super(props); this.state = { 'isLoading': false, 'email': '', 'validators': { 'email': [ validators.email() ] } }; } clean() { if (this.isValid()) { return true; } else { snackbar.error(gettext("Enter a valid email address.")); return false; } } send() { return ajax.post(misago.get('SEND_PASSWORD_RESET_API'), { 'email': this.state.email }); } handleSuccess(apiResponse) { this.props.callback(apiResponse); } handleError(rejection) { if (['inactive_user', 'inactive_admin'].indexOf(rejection.code) > -1) { this.props.showInactivePage(rejection); } else if (rejection.status === 403 && rejection.ban) { showBannedPage(rejection.ban); } else { snackbar.apiError(rejection); } } render() { /* jshint ignore:start */ return
; /* jshint ignore:end */ } } export class LinkSent extends React.Component { getMessage() { return interpolate(gettext("Reset password link was sent to %(email)s"), { email: this.props.user.email }, true); } render() { /* jshint ignore:start */ return
check

{this.getMessage()}

; /* jshint ignore:end */ } } export class AccountInactivePage extends React.Component { getActivateButton() { if (this.props.activation === 'inactive_user') { /* jshint ignore:start */ return

{gettext("Activate your account.")}

; /* jshint ignore:end */ } else { return null; } } render() { /* jshint ignore:start */ return
info_outline

{gettext("Your account is inactive.")}

{this.props.message}

{this.getActivateButton()}
; /* jshint ignore:end */ } } export default class extends React.Component { constructor(props) { super(props); this.state = { complete: false }; } /* jshint ignore:start */ complete = (apiResponse) => { this.setState({ complete: apiResponse }); }; reset = () => { this.setState({ complete: false }); }; showInactivePage(apiResponse) { ReactDOM.render( , document.getElementById('page-mount') ); } /* jshint ignore:end */ render() { /* jshint ignore:start */ if (this.state.complete) { return ; } else { return ; }; /* jshint ignore:end */ } }