Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 867 | Rev 1609 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
697 stevensc 1
import React, { useEffect } from 'react'
2
import { useDispatch, useSelector } from 'react-redux'
3
import { fetchFeeds, setCurrentPage } from '../../../../redux/feed/feed.actions'
199 stevensc 4
 
697 stevensc 5
import Feed from '../feed-template/Feed'
6
import Spinner from '../../../UI/Spinner'
7
import EmptySection from '../../../UI/EmptySection'
1231 stevensc 8
import ShareModal from '../../../modals/ShareModal'
199 stevensc 9
 
10
const PaginationComponent = React.lazy(() =>
697 stevensc 11
  import('../../../UI/PaginationComponent')
12
)
199 stevensc 13
 
14
const FeedList = ({ feed, image }) => {
15
  const { allFeeds, timelineUrl, pages, currentPage, loading } = useSelector(
16
    ({ feed }) => feed
697 stevensc 17
  )
18
  const dispatch = useDispatch()
199 stevensc 19
 
20
  const fetchSpecificFeed = () =>
697 stevensc 21
    dispatch(fetchFeeds(timelineUrl + '/feed/' + feed, 1))
199 stevensc 22
 
23
  const onChangePageHandler = (currentPage) => {
697 stevensc 24
    dispatch(setCurrentPage(currentPage))
25
    window.scrollTo(0, 0)
26
  }
199 stevensc 27
 
28
  useEffect(() => {
697 stevensc 29
    dispatch(setCurrentPage(1))
30
  }, [])
199 stevensc 31
 
32
  useEffect(() => {
33
    if (feed) {
697 stevensc 34
      fetchSpecificFeed()
199 stevensc 35
    } else {
697 stevensc 36
      dispatch(fetchFeeds(timelineUrl, currentPage))
199 stevensc 37
    }
697 stevensc 38
  }, [timelineUrl, currentPage, feed])
199 stevensc 39
 
40
  if (loading) {
697 stevensc 41
    return <Spinner />
199 stevensc 42
  }
43
 
44
  if (!allFeeds.length) {
697 stevensc 45
    return (
46
      <>
867 stevensc 47
        <EmptySection message='No hay publicaciones' />
697 stevensc 48
        <ShareModal timelineUrl={timelineUrl} currentPage={currentPage} />
49
      </>
50
    )
199 stevensc 51
  }
52
 
53
  return (
54
    <>
55
      {allFeeds.map((feed) => {
697 stevensc 56
        return <Feed key={feed.feed_uuid} image={image} {...feed} />
199 stevensc 57
      })}
58
      <React.Suspense fallback={null}>
59
        <PaginationComponent
60
          onChangePage={onChangePageHandler}
61
          pages={pages}
62
          isRow
63
          currentActivePage={currentPage}
64
        />
65
        <ShareModal timelineUrl={timelineUrl} currentPage={currentPage} />
66
      </React.Suspense>
67
    </>
697 stevensc 68
  )
69
}
199 stevensc 70
 
697 stevensc 71
export default FeedList