1 import { Component } from "inferno";
9 CommunityModeratorView,
18 MarkCommentReplyAsRead,
19 MarkPersonMentionAsRead,
26 } from "lemmy-js-client";
27 import { CommentNodeI, CommentViewType } from "../../interfaces";
28 import { CommentNode } from "./comment-node";
30 interface CommentNodesProps {
31 nodes: CommentNodeI[];
32 moderators?: CommunityModeratorView[];
33 admins?: PersonView[];
34 maxCommentsShown?: number;
40 showContext?: boolean;
41 showCommunity?: boolean;
42 enableDownvotes?: boolean;
43 viewType: CommentViewType;
44 allLanguages: Language[];
45 siteLanguages: number[];
47 finished: Map<CommentId, boolean | undefined>;
48 onSaveComment(form: SaveComment): void;
49 onCommentReplyRead(form: MarkCommentReplyAsRead): void;
50 onPersonMentionRead(form: MarkPersonMentionAsRead): void;
51 onCreateComment(form: EditComment | CreateComment): void;
52 onEditComment(form: EditComment | CreateComment): void;
53 onCommentVote(form: CreateCommentLike): void;
54 onBlockPerson(form: BlockPerson): void;
55 onDeleteComment(form: DeleteComment): void;
56 onRemoveComment(form: RemoveComment): void;
57 onDistinguishComment(form: DistinguishComment): void;
58 onAddModToCommunity(form: AddModToCommunity): void;
59 onAddAdmin(form: AddAdmin): void;
60 onBanPersonFromCommunity(form: BanFromCommunity): void;
61 onBanPerson(form: BanPerson): void;
62 onTransferCommunity(form: TransferCommunity): void;
63 onFetchChildren?(form: GetComments): void;
64 onCommentReport(form: CreateCommentReport): void;
65 onPurgePerson(form: PurgePerson): void;
66 onPurgeComment(form: PurgeComment): void;
69 export class CommentNodes extends Component<CommentNodesProps, any> {
70 constructor(props: CommentNodesProps, context: any) {
71 super(props, context);
75 const maxComments = this.props.maxCommentsShown ?? this.props.nodes.length;
78 <div className="comments">
79 {this.props.nodes.slice(0, maxComments).map(node => (
81 key={node.comment_view.comment.id}
83 noBorder={this.props.noBorder}
84 noIndent={this.props.noIndent}
85 viewOnly={this.props.viewOnly}
86 locked={this.props.locked}
87 moderators={this.props.moderators}
88 admins={this.props.admins}
89 markable={this.props.markable}
90 showContext={this.props.showContext}
91 showCommunity={this.props.showCommunity}
92 enableDownvotes={this.props.enableDownvotes}
93 viewType={this.props.viewType}
94 allLanguages={this.props.allLanguages}
95 siteLanguages={this.props.siteLanguages}
96 hideImages={this.props.hideImages}
97 onCommentReplyRead={this.props.onCommentReplyRead}
98 onPersonMentionRead={this.props.onPersonMentionRead}
99 finished={this.props.finished}
100 onCreateComment={this.props.onCreateComment}
101 onEditComment={this.props.onEditComment}
102 onCommentVote={this.props.onCommentVote}
103 onBlockPerson={this.props.onBlockPerson}
104 onSaveComment={this.props.onSaveComment}
105 onDeleteComment={this.props.onDeleteComment}
106 onRemoveComment={this.props.onRemoveComment}
107 onDistinguishComment={this.props.onDistinguishComment}
108 onAddModToCommunity={this.props.onAddModToCommunity}
109 onAddAdmin={this.props.onAddAdmin}
110 onBanPersonFromCommunity={this.props.onBanPersonFromCommunity}
111 onBanPerson={this.props.onBanPerson}
112 onTransferCommunity={this.props.onTransferCommunity}
113 onFetchChildren={this.props.onFetchChildren}
114 onCommentReport={this.props.onCommentReport}
115 onPurgePerson={this.props.onPurgePerson}
116 onPurgeComment={this.props.onPurgeComment}