index.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  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. // md={{ offset: 3, span: 17 }}
  39. // sm={{ offset: 3, span: 15 }}
  40. xs={{ offset: 2, span: 20 }}
  41. >
  42. <div className="OnePost">
  43. <ConstructorModal
  44. title={'Edit post'}
  45. isModalVisible={isModalVisible}
  46. setIsModalVisible={setIsModalVisible}
  47. >
  48. <CPostEditor />
  49. </ConstructorModal>
  50. <MyCarousel
  51. key={onePost?._id}
  52. style={{ position: 'absolute' }}
  53. images={onePost?.images}
  54. carouselWidth={'750px'}
  55. carouselHeight={'500px'}
  56. />
  57. <h3 style={{ textAlign: 'center', padding: '10px' }}>
  58. Created Post:{' '}
  59. {new Intl.DateTimeFormat('en-GB').format(onePost?.createdAt)}
  60. </h3>
  61. </div>
  62. </Col>
  63. <Col
  64. xl={{ offset: 1, span: 8 }}
  65. lg={{ offset: 3, span: 17 }}
  66. xs={{ offset: 2, span: 20 }}
  67. >
  68. <div className="OnePost">
  69. <Col
  70. xl={{ offset: 1, span: 20 }}
  71. lg={{ offset: 1, span: 19 }}
  72. xs={{ offset: 2, span: 20 }}
  73. >
  74. <Row justify="space-between" align="middle">
  75. <LinkToUser
  76. _id={onePost?.owner?._id}
  77. login={onePost?.owner?.login}
  78. avatar={onePost?.owner?.avatar}
  79. key={_id}
  80. size={50}
  81. padding={'0px'}
  82. />
  83. {/* <Row span={1}> */}
  84. {my_Id === onePost?.owner?._id && (
  85. <EditMyPostButton _id={_id} />
  86. )}
  87. {/* </Row> */}
  88. </Row>
  89. </Col>
  90. </div>
  91. <Divider />
  92. <p className="Title"> Title: {onePost?.title || ''} </p>
  93. <p className="Title"> Text: {onePost?.text || ''} </p>
  94. <Divider>Comments</Divider>
  95. <div className="FooterPost">
  96. <div className="CommentsPost">
  97. <CCommentsOnePost comments={onePost?.comments} />
  98. </div>
  99. <Row>
  100. <Col
  101. xl={{ span: 4, offset: 1 }}
  102. lg={{ span: 3, offset: 1 }}
  103. xs={{ offset: 1, span: 3 }}
  104. >
  105. {/* <div style={{ display: 'flex', margin: '20px 0px' }}> */}
  106. <CLike likes={onePost?.likes} postId={onePost?._id} />
  107. </Col>
  108. {/* <Col xl={{span:10,offset:1}}> */}
  109. <AddComment
  110. addComment={addComment}
  111. style={{
  112. position: 'absolute',
  113. // bottom: '120px',
  114. // right: '30px',
  115. }}
  116. // width={'40%'}
  117. postId={onePost?._id}
  118. />
  119. {/* </Col> */}
  120. {/* </div> */}
  121. </Row>
  122. </div>
  123. </Col>
  124. </Row>
  125. </>
  126. )
  127. }
  128. export const CPost = connect(
  129. (state) => ({
  130. onePost: state?.post.onePost,
  131. my_Id: state.auth.payload?.sub?.id || '',
  132. aboutUser: state.userData?.aboutUser,
  133. }),
  134. {
  135. addComment: actionAddFullCommentSaga,
  136. onPost: actionFullOnePostSaga,
  137. },
  138. )(PagePost)