Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

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