import React, { FC, memo, useMemo } from 'react'; import { Comment } from '~/components/comment/Comment'; import { LoadMoreButton } from '~/components/input/LoadMoreButton'; import { ANNOUNCE_USER_ID, BORIS_NODE_ID } from '~/constants/boris/constants'; import { useGrouppedComments } from '~/hooks/node/useGrouppedComments'; import { ICommentGroup } from '~/types'; import { useCommentContext } from '~/utils/context/CommentContextProvider'; import { useNodeContext } from '~/utils/context/NodeContextProvider'; import { useUserContext } from '~/utils/context/UserContextProvider'; import { canEditComment } from '~/utils/node'; import styles from './styles.module.scss'; interface IProps { order: 'ASC' | 'DESC'; } const NodeComments: FC = memo(({ order }) => { const user = useUserContext(); const { node } = useNodeContext(); const { comments, hasMore, isLoading, isLoadingMore, lastSeenCurrent, onLoadMoreComments, onDeleteComment, onShowImageModal, onSaveComment, } = useCommentContext(); const groupped: ICommentGroup[] = useGrouppedComments( comments, order, lastSeenCurrent ?? undefined, ); const more = useMemo( () => hasMore && !isLoading && (
), [hasMore, onLoadMoreComments, isLoadingMore, isLoading], ); if (!node?.id) { return null; } return (
{order === 'DESC' && more} {groupped.map((group) => ( ))} {order === 'ASC' && more}
); }); export { NodeComments };