2019-04-08 05:19:02 +00:00
|
|
|
import { Component } from 'inferno';
|
2019-10-19 00:20:27 +00:00
|
|
|
import {
|
|
|
|
CommentNode as CommentNodeI,
|
|
|
|
CommunityUser,
|
|
|
|
UserView,
|
2020-02-09 16:44:24 +00:00
|
|
|
CommentSortType,
|
|
|
|
SortType,
|
2019-10-19 00:20:27 +00:00
|
|
|
} from '../interfaces';
|
2020-02-09 16:44:24 +00:00
|
|
|
import { commentSort, commentSortSortType } from '../utils';
|
2019-04-08 05:19:02 +00:00
|
|
|
import { CommentNode } from './comment-node';
|
|
|
|
|
2019-10-19 00:20:27 +00:00
|
|
|
interface CommentNodesState {}
|
2019-04-08 05:19:02 +00:00
|
|
|
|
|
|
|
interface CommentNodesProps {
|
|
|
|
nodes: Array<CommentNodeI>;
|
2019-04-16 23:04:23 +00:00
|
|
|
moderators?: Array<CommunityUser>;
|
2019-04-20 04:06:25 +00:00
|
|
|
admins?: Array<UserView>;
|
2019-09-13 15:37:12 +00:00
|
|
|
postCreatorId?: number;
|
2019-04-08 05:19:02 +00:00
|
|
|
noIndent?: boolean;
|
|
|
|
viewOnly?: boolean;
|
2019-04-15 23:12:06 +00:00
|
|
|
locked?: boolean;
|
2019-04-20 18:17:00 +00:00
|
|
|
markable?: boolean;
|
2020-03-20 20:53:54 +00:00
|
|
|
showContext?: boolean;
|
2020-02-08 04:05:15 +00:00
|
|
|
showCommunity?: boolean;
|
2020-02-09 16:44:24 +00:00
|
|
|
sort?: CommentSortType;
|
|
|
|
sortType?: SortType;
|
2019-04-08 05:19:02 +00:00
|
|
|
}
|
|
|
|
|
2019-10-19 00:20:27 +00:00
|
|
|
export class CommentNodes extends Component<
|
|
|
|
CommentNodesProps,
|
|
|
|
CommentNodesState
|
|
|
|
> {
|
2019-04-08 05:19:02 +00:00
|
|
|
constructor(props: any, context: any) {
|
|
|
|
super(props, context);
|
|
|
|
}
|
|
|
|
|
|
|
|
render() {
|
|
|
|
return (
|
|
|
|
<div className="comments">
|
2020-02-09 16:44:24 +00:00
|
|
|
{this.sorter().map(node => (
|
2019-10-19 00:20:27 +00:00
|
|
|
<CommentNode
|
2020-03-10 01:38:10 +00:00
|
|
|
key={node.comment.id}
|
2019-10-19 00:20:27 +00:00
|
|
|
node={node}
|
|
|
|
noIndent={this.props.noIndent}
|
|
|
|
viewOnly={this.props.viewOnly}
|
|
|
|
locked={this.props.locked}
|
2019-04-20 04:06:25 +00:00
|
|
|
moderators={this.props.moderators}
|
|
|
|
admins={this.props.admins}
|
2019-09-13 15:37:12 +00:00
|
|
|
postCreatorId={this.props.postCreatorId}
|
2019-04-20 18:17:00 +00:00
|
|
|
markable={this.props.markable}
|
2020-03-20 20:53:54 +00:00
|
|
|
showContext={this.props.showContext}
|
2020-02-08 04:05:15 +00:00
|
|
|
showCommunity={this.props.showCommunity}
|
2020-02-09 16:44:24 +00:00
|
|
|
sort={this.props.sort}
|
|
|
|
sortType={this.props.sortType}
|
2019-08-10 00:14:43 +00:00
|
|
|
/>
|
2019-10-19 00:20:27 +00:00
|
|
|
))}
|
2019-04-08 05:19:02 +00:00
|
|
|
</div>
|
2019-10-19 00:20:27 +00:00
|
|
|
);
|
2019-04-08 05:19:02 +00:00
|
|
|
}
|
2020-02-09 16:44:24 +00:00
|
|
|
|
|
|
|
sorter(): Array<CommentNodeI> {
|
|
|
|
if (this.props.sort !== undefined) {
|
|
|
|
commentSort(this.props.nodes, this.props.sort);
|
|
|
|
} else if (this.props.sortType !== undefined) {
|
|
|
|
commentSortSortType(this.props.nodes, this.props.sortType);
|
|
|
|
}
|
|
|
|
|
|
|
|
return this.props.nodes;
|
|
|
|
}
|
2019-04-08 05:19:02 +00:00
|
|
|
}
|