index.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. import { Link } from 'react-router-dom'
  2. import { Avatar, Divider, Input, Button } from 'antd'
  3. import user from '../../materials/user.png'
  4. import { connect } from 'react-redux'
  5. import { Row, Col } from 'antd'
  6. import { CCommentsOnePost } from '../../components/comment/Comment'
  7. import { CPostEditor } from '../createAndEditPost'
  8. import AddComment from '../../components/comment/AddComment'
  9. import {
  10. actionFullOnePostSaga,
  11. actionAddFullCommentSaga,
  12. } from '../../actions/typeSaga/postTypesSaga'
  13. import { CLike } from '../../components/like/Like'
  14. import { ConstructorModal } from '../../helpers'
  15. import React, { useState, useEffect } from 'react'
  16. import { LinkToUser } from '../../components/LinkToUser'
  17. import { MyCarousel } from '../../components/post/Carousel'
  18. import { EditMyPostButton } from '../../components/buttons/EditPostButton'
  19. export const PagePost = ({
  20. my_Id,
  21. onePost,
  22. addComment,
  23. match: {
  24. params: { _id },
  25. },
  26. onPost,
  27. }) => {
  28. const [isModalVisible, setIsModalVisible] = useState(false)
  29. useEffect(() => {
  30. onPost(_id)
  31. }, [_id])
  32. return (
  33. <>
  34. <Row>
  35. <Col
  36. xl={{ offset: 1, span: 13 }}
  37. lg={{ offset: 2, span: 18 }}
  38. xs={{ offset: 2, span: 20 }}
  39. >
  40. <div className="OnePost">
  41. <ConstructorModal
  42. title={'Edit post'}
  43. isModalVisible={isModalVisible}
  44. setIsModalVisible={setIsModalVisible}
  45. >
  46. <CPostEditor />
  47. </ConstructorModal>
  48. <MyCarousel
  49. key={onePost?._id}
  50. style={{ position: 'absolute' }}
  51. images={onePost?.images}
  52. carouselWidth={'750px'}
  53. carouselHeight={'500px'}
  54. />
  55. <p style={{ textAlign: 'center', padding: '10px' }}>
  56. Created Post:{' '}
  57. {new Intl.DateTimeFormat('en-GB').format(onePost?.createdAt)}
  58. </p>
  59. </div>
  60. </Col>
  61. <Col
  62. xl={{ offset: 1, span: 8 }}
  63. lg={{ offset: 3, span: 17 }}
  64. xs={{ offset: 2, span: 20 }}
  65. >
  66. <div className="OnePost">
  67. <Col
  68. xl={{ offset: 1, span: 20 }}
  69. lg={{ offset: 1, span: 19 }}
  70. xs={{ offset: 2, span: 20 }}
  71. >
  72. <Row justify="space-between" align="middle">
  73. <LinkToUser
  74. _id={onePost?.owner?._id}
  75. login={onePost?.owner?.login}
  76. avatar={onePost?.owner?.avatar}
  77. key={_id}
  78. size={50}
  79. padding={'10px 5px'}
  80. />
  81. {my_Id === onePost?.owner?._id && (
  82. <EditMyPostButton _id={_id} />
  83. )}
  84. </Row>
  85. </Col>
  86. </div>
  87. <Divider />
  88. <p className="Title"> Title: {onePost?.title || ''} </p>
  89. <p className="Title"> Text: {onePost?.text || ''} </p>
  90. <Divider>Comments</Divider>
  91. <div className="FooterPost">
  92. <div className="CommentsPost">
  93. <CCommentsOnePost comments={onePost?.comments} />
  94. </div>
  95. <Row>
  96. <Col
  97. xl={{ span: 4, offset: 1 }}
  98. lg={{ span: 3, offset: 1 }}
  99. xs={{ offset: 0, span: 2 }}
  100. >
  101. <CLike likes={onePost?.likes} postId={onePost?._id} />
  102. </Col>
  103. <AddComment
  104. addComment={addComment}
  105. style={{
  106. position: 'absolute',
  107. bottom: '120px',
  108. right: '30px',
  109. width: '250px',
  110. }}
  111. postId={onePost?._id}
  112. />
  113. </Row>
  114. </div>
  115. </Col>
  116. </Row>
  117. </>
  118. )
  119. }
  120. export const CPost = connect(
  121. (state) => ({
  122. onePost: state?.post.onePost,
  123. my_Id: state.auth.payload?.sub?.id || '',
  124. aboutUser: state.userData?.aboutUser,
  125. }),
  126. {
  127. addComment: actionAddFullCommentSaga,
  128. onPost: actionFullOnePostSaga,
  129. },
  130. )(PagePost)