import React from 'react'; // jshint ignore:line import Button from 'misago/components/button'; // jshint ignore:line import Form from 'misago/components/form'; import FormGroup from 'misago/components/form-group'; // jshint ignore:line import Loader from 'misago/components/modal-loader'; // jshint ignore:line import ModalMessage from 'misago/components/modal-message'; // jshint ignore:line import { addNameChange } from 'misago/reducers/username-history'; // jshint ignore:line import { updateUsername } from 'misago/reducers/users'; // jshint ignore:line import ajax from 'misago/services/ajax'; import snackbar from 'misago/services/snackbar'; import store from 'misago/services/store'; import * as validators from 'misago/utils/validators'; export default class extends Form { constructor(props) { super(props); this.state = { isLoaded: false, isLoading: false, error: null, username: '', validators: { username: [ validators.usernameContent() ] } }; } componentDidMount() { ajax.get(this.props.profile.api_url.moderate_username).then(() => { this.setState({ isLoaded: true }); }, (rejection) => { this.setState({ isLoaded: true, error: rejection.detail }); }); } clean() { if (this.isValid()) { return true; } else { snackbar.error(this.validate().username[0]); return false; } } send() { return ajax.post(this.props.profile.api_url.moderate_username, { username: this.state.username }); } handleSuccess(apiResponse) { this.setState({ username: '' }); store.dispatch(addNameChange( apiResponse, this.props.profile, this.props.user)); store.dispatch(updateUsername( this.props.profile, apiResponse.username, apiResponse.slug)); snackbar.success(gettext("Username has been changed.")); } getFormBody() { /* jshint ignore:start */ return
; /* jshint ignore:end */ } getModalBody() { if (this.state.error) { /* jshint ignore:start */ return ; /* jshint ignore:end */ } else if (this.state.isLoaded) { return this.getFormBody(); } else { /* jshint ignore:start */ return ; /* jshint ignore:end */ } } getClassName() { if (this.state.error) { return "modal-dialog modal-message modal-rename-user"; } else { return "modal-dialog modal-rename-user"; } } render() { /* jshint ignore:start */ return

{gettext("Change username")}

{this.getModalBody()}
; /* jshint ignore:end */ } }