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 (
{i18n.t("applicant")}:
{i18n.t("created")}:
{i18n.t("answer")}:
{a.admin && (
{accepted ? ( # ) : (
# {ra.deny_reason && (
{i18n.t("deny_reason")}:{" "}
)}
)}
)} {this.state.denyExpanded && (
)} {(!ra.admin_id || (ra.admin_id && !accepted)) && ( )} {(!ra.admin_id || (ra.admin_id && accepted)) && ( )}
); } handleApprove(i: RegistrationApplication) { i.setState({ denyExpanded: false, approveLoading: true }); i.props.onApproveApplication({ id: i.props.application.registration_application.id, approve: true, auth: myAuthRequired(), }); } handleDeny(i: RegistrationApplication) { if (i.state.denyExpanded) { i.setState({ denyExpanded: false, denyLoading: true }); i.props.onApproveApplication({ id: i.props.application.registration_application.id, approve: false, deny_reason: i.state.denyReason, auth: myAuthRequired(), }); } else { i.setState({ denyExpanded: true }); } } handleDenyReasonChange(val: string) { this.setState({ denyReason: val }); } }