]> Untitled Git - lemmy-ui.git/blob - src/shared/components/comment/comment-nodes.tsx
Merge pull request #1269 from alectrocute/AA/missing-tooltip-from-post-listing
[lemmy-ui.git] / src / shared / components / comment / comment-nodes.tsx
1 import { Component } from "inferno";
2 import {
3   AddAdmin,
4   AddModToCommunity,
5   BanFromCommunity,
6   BanPerson,
7   BlockPerson,
8   CommentId,
9   CommunityModeratorView,
10   CreateComment,
11   CreateCommentLike,
12   CreateCommentReport,
13   DeleteComment,
14   DistinguishComment,
15   EditComment,
16   GetComments,
17   Language,
18   MarkCommentReplyAsRead,
19   MarkPersonMentionAsRead,
20   PersonView,
21   PurgeComment,
22   PurgePerson,
23   RemoveComment,
24   SaveComment,
25   TransferCommunity,
26 } from "lemmy-js-client";
27 import { CommentNodeI, CommentViewType } from "../../interfaces";
28 import { CommentNode } from "./comment-node";
29
30 interface CommentNodesProps {
31   nodes: CommentNodeI[];
32   moderators?: CommunityModeratorView[];
33   admins?: PersonView[];
34   maxCommentsShown?: number;
35   noBorder?: boolean;
36   noIndent?: boolean;
37   viewOnly?: boolean;
38   locked?: boolean;
39   markable?: boolean;
40   showContext?: boolean;
41   showCommunity?: boolean;
42   enableDownvotes?: boolean;
43   viewType: CommentViewType;
44   allLanguages: Language[];
45   siteLanguages: number[];
46   hideImages?: boolean;
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;
67 }
68
69 export class CommentNodes extends Component<CommentNodesProps, any> {
70   constructor(props: CommentNodesProps, context: any) {
71     super(props, context);
72   }
73
74   render() {
75     const maxComments = this.props.maxCommentsShown ?? this.props.nodes.length;
76
77     return (
78       <div className="comments">
79         {this.props.nodes.slice(0, maxComments).map(node => (
80           <CommentNode
81             key={node.comment_view.comment.id}
82             node={node}
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}
117           />
118         ))}
119       </div>
120     );
121   }
122 }