2023-06-04 02:02:07 +00:00
|
|
|
import classNames from "classnames";
|
2021-02-22 02:39:04 +00:00
|
|
|
import { Component } from "inferno";
|
2023-05-11 18:32:32 +00:00
|
|
|
import { CommunityModeratorView, Language, PersonView } from "lemmy-js-client";
|
|
|
|
import { CommentNodeI, CommentViewType } from "../../interfaces";
|
2023-06-04 02:02:07 +00:00
|
|
|
import { colorList } from "../../utils";
|
2021-02-22 02:39:04 +00:00
|
|
|
import { CommentNode } from "./comment-node";
|
2020-09-06 16:15:25 +00:00
|
|
|
|
|
|
|
interface CommentNodesProps {
|
|
|
|
nodes: CommentNodeI[];
|
2023-01-04 16:56:24 +00:00
|
|
|
moderators?: CommunityModeratorView[];
|
2023-05-11 18:32:32 +00:00
|
|
|
admins?: PersonView[];
|
2023-01-04 16:56:24 +00:00
|
|
|
maxCommentsShown?: number;
|
2020-09-06 16:15:25 +00:00
|
|
|
noBorder?: boolean;
|
|
|
|
noIndent?: boolean;
|
|
|
|
viewOnly?: boolean;
|
|
|
|
locked?: boolean;
|
|
|
|
markable?: boolean;
|
|
|
|
showContext?: boolean;
|
|
|
|
showCommunity?: boolean;
|
2022-06-21 21:42:29 +00:00
|
|
|
enableDownvotes?: boolean;
|
2022-07-30 13:28:08 +00:00
|
|
|
viewType: CommentViewType;
|
2022-09-22 15:14:58 +00:00
|
|
|
allLanguages: Language[];
|
2022-12-19 15:57:29 +00:00
|
|
|
siteLanguages: number[];
|
2022-11-19 02:02:38 +00:00
|
|
|
hideImages?: boolean;
|
2023-06-04 02:02:07 +00:00
|
|
|
isChild?: boolean;
|
|
|
|
depth?: number;
|
2020-09-06 16:15:25 +00:00
|
|
|
}
|
|
|
|
|
2021-02-22 02:39:04 +00:00
|
|
|
export class CommentNodes extends Component<CommentNodesProps, any> {
|
2023-04-15 14:47:10 +00:00
|
|
|
constructor(props: CommentNodesProps, context: any) {
|
2020-09-06 16:15:25 +00:00
|
|
|
super(props, context);
|
|
|
|
}
|
|
|
|
|
|
|
|
render() {
|
2023-06-04 02:02:07 +00:00
|
|
|
const maxComments = this.props.maxCommentsShown ?? this.props.nodes.length;
|
2021-11-16 14:46:12 +00:00
|
|
|
|
2023-06-04 02:02:07 +00:00
|
|
|
const borderColor = this.props.depth
|
|
|
|
? colorList[this.props.depth % colorList.length]
|
|
|
|
: colorList[0];
|
|
|
|
|
|
|
|
return this.props.nodes.length > 0 ? (
|
|
|
|
<ul
|
|
|
|
className={classNames("comments", {
|
|
|
|
"ms-2": !!this.props.isChild,
|
|
|
|
"border-top border-light": !this.props.noBorder,
|
|
|
|
})}
|
|
|
|
style={{
|
|
|
|
"border-left-color": borderColor,
|
|
|
|
"border-left-style": "solid",
|
|
|
|
"border-left-width": `2px`,
|
|
|
|
}}
|
|
|
|
>
|
2021-11-16 14:46:12 +00:00
|
|
|
{this.props.nodes.slice(0, maxComments).map(node => (
|
2020-09-06 16:15:25 +00:00
|
|
|
<CommentNode
|
2020-12-24 01:58:27 +00:00
|
|
|
key={node.comment_view.comment.id}
|
2020-09-06 16:15:25 +00:00
|
|
|
node={node}
|
|
|
|
noBorder={this.props.noBorder}
|
|
|
|
noIndent={this.props.noIndent}
|
|
|
|
viewOnly={this.props.viewOnly}
|
|
|
|
locked={this.props.locked}
|
|
|
|
moderators={this.props.moderators}
|
|
|
|
admins={this.props.admins}
|
|
|
|
markable={this.props.markable}
|
|
|
|
showContext={this.props.showContext}
|
|
|
|
showCommunity={this.props.showCommunity}
|
|
|
|
enableDownvotes={this.props.enableDownvotes}
|
2022-07-30 13:28:08 +00:00
|
|
|
viewType={this.props.viewType}
|
2022-09-22 15:14:58 +00:00
|
|
|
allLanguages={this.props.allLanguages}
|
2022-12-19 15:57:29 +00:00
|
|
|
siteLanguages={this.props.siteLanguages}
|
2022-11-19 02:02:38 +00:00
|
|
|
hideImages={this.props.hideImages}
|
2020-09-06 16:15:25 +00:00
|
|
|
/>
|
|
|
|
))}
|
2023-06-04 02:02:07 +00:00
|
|
|
</ul>
|
|
|
|
) : null;
|
2020-09-06 16:15:25 +00:00
|
|
|
}
|
|
|
|
}
|