import { Component, InfernoNode, linkEvent } from "inferno"; import { T } from "inferno-i18next-dess"; import { ApproveRegistrationApplication, RegistrationApplicationView, } from "lemmy-js-client"; import { i18n } from "../../i18next"; import { mdToHtml, myAuthRequired } from "../../utils"; import { PersonListing } from "../person/person-listing"; import { Spinner } from "./icon"; import { MarkdownTextArea } from "./markdown-textarea"; import { MomentTime } from "./moment-time"; interface RegistrationApplicationProps { application: RegistrationApplicationView; onApproveApplication(form: ApproveRegistrationApplication): void; } interface RegistrationApplicationState { denyReason?: string; denyExpanded: boolean; approveLoading: boolean; denyLoading: boolean; } export class RegistrationApplication extends Component< RegistrationApplicationProps, RegistrationApplicationState > { state: RegistrationApplicationState = { denyReason: this.props.application.registration_application.deny_reason, denyExpanded: false, approveLoading: false, denyLoading: false, }; constructor(props: any, context: any) { super(props, context); this.handleDenyReasonChange = this.handleDenyReasonChange.bind(this); } componentWillReceiveProps( nextProps: Readonly< { children?: InfernoNode } & RegistrationApplicationProps > ): void { if (this.props != nextProps) { this.setState({ denyExpanded: false, approveLoading: false, denyLoading: false, }); } } render() { const a = this.props.application; const ra = this.props.application.registration_application; const accepted = a.creator_local_user.accepted_application; return (