import React from "react" import Button from "misago/components/button" import Form from "misago/components/form" import FormGroup from "misago/components/form-group" import Loader from "misago/components/modal-loader" import ModalMessage from "misago/components/modal-message" import YesNoSwitch from "misago/components/yes-no-switch" import misago from "misago/index" import ajax from "misago/services/ajax" import polls from "misago/services/polls" export default class extends Form { constructor(props) { super(props) this.state = { isLoaded: false, isLoading: false, isDeleted: false, error: null, countdown: 5, confirm: false, with_content: false, } } componentDidMount() { ajax.get(this.props.profile.api.delete).then( () => { this.setState({ isLoaded: true, }) this.countdown() }, (rejection) => { this.setState({ isLoaded: true, error: rejection.detail, }) } ) } countdown = () => { window.setTimeout(() => { if (this.state.countdown > 1) { this.setState({ countdown: this.state.countdown - 1, }) this.countdown() } else if (!this.state.confirm) { this.setState({ confirm: true, }) } }, 1000) } send() { return ajax.post(this.props.profile.api.delete, { with_content: this.state.with_content, }) } handleSuccess() { polls.stop("user-profile") if (this.state.with_content) { this.setState({ isDeleted: interpolate( gettext( "%(username)s's account, threads, posts and other content has been deleted." ), { username: this.props.profile.username, }, true ), }) } else { this.setState({ isDeleted: interpolate( gettext( "%(username)s's account has been deleted and other content has been hidden." ), { username: this.props.profile.username, }, true ), }) } } getButtonLabel() { if (this.state.confirm) { return interpolate( gettext("Delete %(username)s"), { username: this.props.profile.username, }, true ) } else { return interpolate( gettext("Please wait... (%(countdown)ss)"), { countdown: this.state.countdown, }, true ) } } getForm() { return (
) } getDeletedBody() { return ({this.state.isDeleted}