import React, { useState } from 'react' import { Button, Divider, Dropdown, Menu } from 'antd'; import { connect } from 'react-redux' import PostImage from '../components/main/postsFeed/PostImage' import { PostDescription } from './MainPostsFeed'; import Text from 'antd/lib/typography/Text'; import { CFieldCommentSend, CFieldSubCommentSend, CFieldUpsertCommentSend } from '../components/main/postsFeed/FieldComment'; import { CPostUserPanel } from '../components/main/postsFeed/PostUserPanel'; import { Comment, Tooltip } from 'antd'; import moment from 'moment'; import { Link } from 'react-router-dom'; import { DeleteOutlined, EditOutlined, LikeFilled, LikeOutlined, MoreOutlined } from '@ant-design/icons'; import { actionLikeComment, actionDelLikeComment, actionSubComment } from '../actions'; import { CPostTitle } from '../components/main/post/PostTitle'; import { UserAvatar } from '../components/header/UserAvatar'; import { CPreloader } from './Preloader'; import Paragraph from 'antd/lib/typography/Paragraph'; const PostPageTitle = ({ data: { owner }, postId }) => const CPostPageTitle = connect(state => ({ data: state?.postsFeed?.posts || {}, postId: state?.postsFeed?.posts?._id }))(PostPageTitle) const PostCommentAuthor = ({ owner }) => <> {owner?.nick ? owner.nick : owner?.login ? owner.login : 'Null'} const EditMenu = ({ setEditComment }) => setEditComment(true)}> Edit const PostCommentText = ({ myID, commentId, owner, text }) => { const [editComment, setEditComment] = useState(false) return ( <> {owner?._id === myID && } placement="bottomRight"> } {!editComment ? } trigger={['contextMenu']}> {text} : } ) } const CPostCommentText = connect(state => ({ myID: state.auth.payload.sub.id || '' }))(PostCommentText) const PostCommentDate = ({ createdAt }) => {moment(new Date(+createdAt)).startOf().fromNow()} const PostCommentAction = ({ myID, commentId, likes, delLikeComment, addLikeComment }) => { const [open, setOpen] = useState(false); const likeId = likes.find(l => l?.owner?._id === myID)?._id const changeLike = () => likeId ? delLikeComment(likeId, commentId) : addLikeComment(commentId) return ( <> {likeId ? : } {likes.length ? likes.length : ''} setOpen(!open)}>Reply to {open && } ) } const CPostCommentAction = connect(state => ({ myID: state.auth.payload.sub.id || '' }), { addLikeComment: actionLikeComment, delLikeComment: actionDelLikeComment })(PostCommentAction) const PostComments = ({ comments, findSubComment, parentId, }) => { return (<> {comments?.length && Object.keys(comments[0]).length > 1 ? comments.map(c => { return ( } avatar={< UserAvatar avatar={c?.owner?.avatar} avatarSize={'35px'} />} datetime={} content={} actions={[]} > { c.answers && c.answers?.length ? <> : null } ) }) : !!comments.length && findSubComment(parentId)} > View answers {comments.length} } ) } const CPostComments = connect(state => ({ comments: state?.postsFeed?.posts?.comments || [], }), { findSubComment: actionSubComment })(PostComments) const PostPageDescrption = ({ data: { _id, likes, text, title, createdAt, } }) =>
Comments
{ }} /> {/* setOpen - функция заглушка для пропса компонента*/}
const CPostPageDescrption = connect(state => ({ data: state?.postsFeed?.posts || {} }))(PostPageDescrption) const PostPage = ({ data: { images } }) =>
export const CPostPage = connect(state => ({ data: state?.postsFeed?.posts || {} }))(PostPage)