X-Git-Url: http://these/git/?a=blobdiff_plain;f=src%2Fshared%2Fcomponents%2Fcomment%2Fcomment-report.tsx;h=ff00bc593e8fe8e60e70814c0b32f895a8837d7f;hb=2b1af707c3df6126b3e6890106c03c60ad49b1be;hp=64c659fb3ad54e38d505f0955175017ff08bb026;hpb=f61037f5d89f12818c8100f907a98b74e980112a;p=lemmy-ui.git diff --git a/src/shared/components/comment/comment-report.tsx b/src/shared/components/comment/comment-report.tsx index 64c659f..ff00bc5 100644 --- a/src/shared/components/comment/comment-report.tsx +++ b/src/shared/components/comment/comment-report.tsx @@ -1,4 +1,4 @@ -import { Component, linkEvent } from "inferno"; +import { Component, InfernoNode, linkEvent } from "inferno"; import { T } from "inferno-i18next-dess"; import { CommentReportView, @@ -7,21 +7,39 @@ import { } from "lemmy-js-client"; import { i18n } from "../../i18next"; import { CommentNodeI, CommentViewType } from "../../interfaces"; -import { WebSocketService } from "../../services"; -import { myAuth, wsClient } from "../../utils"; -import { Icon } from "../common/icon"; +import { myAuthRequired } from "../../utils"; +import { Icon, Spinner } from "../common/icon"; import { PersonListing } from "../person/person-listing"; import { CommentNode } from "./comment-node"; interface CommentReportProps { report: CommentReportView; + onResolveReport(form: ResolveCommentReport): void; } -export class CommentReport extends Component { +interface CommentReportState { + loading: boolean; +} + +export class CommentReport extends Component< + CommentReportProps, + CommentReportState +> { + state: CommentReportState = { + loading: false, + }; constructor(props: any, context: any) { super(props, context); } + componentWillReceiveProps( + nextProps: Readonly<{ children?: InfernoNode } & CommentReportProps> + ): void { + if (this.props != nextProps) { + this.setState({ loading: false }); + } + } + render() { const r = this.props.report; const comment = r.comment; @@ -62,6 +80,26 @@ export class CommentReport extends Component { allLanguages={[]} siteLanguages={[]} hideImages + // All of these are unused, since its viewonly + finished={new Map()} + onSaveComment={() => {}} + onBlockPerson={() => {}} + onDeleteComment={() => {}} + onRemoveComment={() => {}} + onCommentVote={() => {}} + onCommentReport={() => {}} + onDistinguishComment={() => {}} + onAddModToCommunity={() => {}} + onAddAdmin={() => {}} + onTransferCommunity={() => {}} + onPurgeComment={() => {}} + onPurgePerson={() => {}} + onCommentReplyRead={() => {}} + onPersonMentionRead={() => {}} + onBanPersonFromCommunity={() => {}} + onBanPerson={() => {}} + onCreateComment={() => Promise.resolve({ state: "empty" })} + onEditComment={() => Promise.resolve({ state: "empty" })} />
{i18n.t("reporter")}: @@ -90,26 +128,27 @@ export class CommentReport extends Component { data-tippy-content={tippyContent} aria-label={tippyContent} > - + {this.state.loading ? ( + + ) : ( + + )}
); } handleResolveReport(i: CommentReport) { - const auth = myAuth(); - if (auth) { - const form: ResolveCommentReport = { - report_id: i.props.report.comment_report.id, - resolved: !i.props.report.comment_report.resolved, - auth, - }; - WebSocketService.Instance.send(wsClient.resolveCommentReport(form)); - } + i.setState({ loading: true }); + i.props.onResolveReport({ + report_id: i.props.report.comment_report.id, + resolved: !i.props.report.comment_report.resolved, + auth: myAuthRequired(), + }); } }