import { None, Option, Some } from "@sniptt/monads"; import { Component, linkEvent } from "inferno"; import { T } from "inferno-i18next-dess"; import { ApproveRegistrationApplication, RegistrationApplicationView, } from "lemmy-js-client"; import { i18n } from "../../i18next"; import { WebSocketService } from "../../services"; import { auth, mdToHtml, wsClient } from "../../utils"; import { PersonListing } from "../person/person-listing"; import { MarkdownTextArea } from "./markdown-textarea"; import { MomentTime } from "./moment-time"; interface RegistrationApplicationProps { application: RegistrationApplicationView; } interface RegistrationApplicationState { denyReason: Option; denyExpanded: boolean; } export class RegistrationApplication extends Component< RegistrationApplicationProps, RegistrationApplicationState > { private emptyState: RegistrationApplicationState = { denyReason: this.props.application.registration_application.deny_reason, denyExpanded: false, }; constructor(props: any, context: any) { super(props, context); this.state = this.emptyState; this.handleDenyReasonChange = this.handleDenyReasonChange.bind(this); } render() { let a = this.props.application; let ra = this.props.application.registration_application; let accepted = a.creator_local_user.accepted_application; return (
{i18n.t("applicant")}:
{i18n.t("created")}:{" "}
{i18n.t("answer")}:
{a.admin.match({ some: admin => (
{accepted ? ( # ) : (
# {ra.deny_reason.match({ some: deny_reason => (
{i18n.t("deny_reason")}:{" "}
), none: <>, })}
)}
), none: <>, })} {this.state.denyExpanded && (
)} {(ra.admin_id.isNone() || (ra.admin_id.isSome() && !accepted)) && ( )} {(ra.admin_id.isNone() || (ra.admin_id.isSome() && accepted)) && ( )}
); } handleApprove(i: RegistrationApplication) { i.setState({ denyExpanded: false }); let form = new ApproveRegistrationApplication({ id: i.props.application.registration_application.id, deny_reason: None, approve: true, auth: auth().unwrap(), }); WebSocketService.Instance.send( wsClient.approveRegistrationApplication(form) ); } handleDeny(i: RegistrationApplication) { if (i.state.denyExpanded) { i.setState({ denyExpanded: false }); let form = new ApproveRegistrationApplication({ id: i.props.application.registration_application.id, approve: false, deny_reason: i.state.denyReason, auth: auth().unwrap(), }); WebSocketService.Instance.send( wsClient.approveRegistrationApplication(form) ); } else { i.setState({ denyExpanded: true }); } } handleDenyReasonChange(val: string) { this.state.denyReason = Some(val); this.setState(this.state); } }