import { myAuthRequired } from "@utils/app"; import { Component, InfernoNode, linkEvent } from "inferno"; import { CreatePrivateMessage, CreatePrivateMessageReport, DeletePrivateMessage, EditPrivateMessage, MarkPrivateMessageAsRead, Person, PrivateMessageView, } from "lemmy-js-client"; import { mdToHtml } from "../../markdown"; import { I18NextService, UserService } from "../../services"; import { Icon, Spinner } from "../common/icon"; import { MomentTime } from "../common/moment-time"; import { PersonListing } from "../person/person-listing"; import { PrivateMessageForm } from "./private-message-form"; interface PrivateMessageState { showReply: boolean; showEdit: boolean; collapsed: boolean; viewSource: boolean; showReportDialog: boolean; reportReason?: string; deleteLoading: boolean; readLoading: boolean; reportLoading: boolean; } interface PrivateMessageProps { private_message_view: PrivateMessageView; onDelete(form: DeletePrivateMessage): void; onMarkRead(form: MarkPrivateMessageAsRead): void; onReport(form: CreatePrivateMessageReport): void; onCreate(form: CreatePrivateMessage): void; onEdit(form: EditPrivateMessage): void; } export class PrivateMessage extends Component< PrivateMessageProps, PrivateMessageState > { state: PrivateMessageState = { showReply: false, showEdit: false, collapsed: false, viewSource: false, showReportDialog: false, deleteLoading: false, readLoading: false, reportLoading: false, }; constructor(props: any, context: any) { super(props, context); this.handleReplyCancel = this.handleReplyCancel.bind(this); } get mine(): boolean { return ( UserService.Instance.myUserInfo?.local_user_view.person.id == this.props.private_message_view.creator.id ); } componentWillReceiveProps( nextProps: Readonly<{ children?: InfernoNode } & PrivateMessageProps> ): void { if (this.props != nextProps) { this.setState({ showReply: false, showEdit: false, collapsed: false, viewSource: false, showReportDialog: false, deleteLoading: false, readLoading: false, reportLoading: false, }); } } render() { const message_view = this.props.private_message_view; const otherPerson: Person = this.mine ? message_view.recipient : message_view.creator; return (
{this.messageUnlessRemoved}) : ( )}