index.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. import {
  2. actionOnePost,
  3. actionExplorePosts,
  4. actionFullExplorePosts,
  5. } from '../../actions'
  6. import { Row, Col } from 'antd'
  7. import { Card } from '../../components/PostCard'
  8. import React, { useEffect, useState } from 'react'
  9. import { connect } from 'react-redux'
  10. import {
  11. actionClearExplorePosts,
  12. actionAllClearExplore,
  13. } from '../../redux/reducers/exploreReducer'
  14. import load from '../../materials/load.gif'
  15. const ExplorePosts = ({
  16. explorePosts = [],
  17. onPost,
  18. onClearExplore,
  19. onExlorePosts,
  20. explorePostsCount,
  21. explorePostsPromise
  22. }) => {
  23. const [checkScroll, setScroll] = useState(true)
  24. console.log('scroll ', checkScroll)
  25. useEffect(() => {
  26. if (checkScroll) {
  27. onExlorePosts()
  28. }
  29. setScroll(false)
  30. }, [checkScroll])
  31. useEffect(() => {
  32. document.addEventListener('scroll', scrollHandler)
  33. return () => {
  34. document.removeEventListener('scroll', scrollHandler)
  35. onClearExplore()
  36. }
  37. }, [])
  38. useEffect(() => {
  39. document.addEventListener('scroll', scrollHandler)
  40. }, [explorePosts.length])
  41. const scrollHandler = (e) => {
  42. if (
  43. e.target.documentElement.scrollHeight -
  44. (e.target.documentElement.scrollTop + window.innerHeight) <
  45. 200
  46. ) {
  47. setScroll(true)
  48. document.removeEventListener('scroll', scrollHandler)
  49. }
  50. }
  51. return (
  52. <>
  53. <Row>
  54. <Col span={18} offset={4}>
  55. <div
  56. style={{
  57. display: 'flex',
  58. flexWrap: 'wrap',
  59. padding: '20px',
  60. margin: '20px',
  61. marginTop: '50px',
  62. }}
  63. >
  64. {(explorePosts || [])?.map((item) => (
  65. <Card post={item} onPost={onPost} />
  66. ))}
  67. </div>
  68. </Col>
  69. </Row>
  70. {(explorePostsPromise?.status == "PENDING") &&
  71. <img style={{ display: 'block', margin: '0 auto', marginBottom:'200px', padding: '10px' }}
  72. src={load} width="100" height="100" />
  73. }
  74. </>
  75. )
  76. }
  77. export const CExplorePosts = connect(
  78. (state) => ({
  79. my_Id: state.auth?.payload?.sub?.id || '',
  80. countAllPostsUser: state.promise?.countAllPostsUser?.payload,
  81. explorePosts: state.explore?.explorePosts,
  82. explorePostsPromise: state.promise?.explorePosts,
  83. explorePostsCount: state.explore?.explorePostsCount,
  84. }),
  85. {
  86. onExlorePosts: actionFullExplorePosts,
  87. onPost: actionOnePost,
  88. onClearExplore: actionClearExplorePosts,
  89. },
  90. )(ExplorePosts)