Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
6618 stevensc 1
import React, { Suspense, useEffect } from 'react'
2
import { useDispatch, useSelector } from 'react-redux'
3
import { fetchFeeds, setCurrentPage } from '../../redux/feed/feed.actions'
4
 
5
import EmptySection from '../UI/EmptySection'
6
import Spinner from '../UI/Spinner'
7
import Feed from '../feed/Feed'
8
 
9
const PaginationComponent = React.lazy(() =>
10
  import('../UI/PaginationComponent')
11
)
12
 
13
const isDashboard = window.location.pathname.includes('dashboard')
14
const isMobile = window.innerWidth < 768
15
 
16
const FeedSection = ({ feed, image }) => {
17
  const { allFeeds, timelineUrl, pages, currentPage, loading } = useSelector(
6621 stevensc 18
    ({ feed }) => feed
6618 stevensc 19
  )
6621 stevensc 20
  const labels = useSelector(({ intl }) => intl.labels)
6618 stevensc 21
  const dispatch = useDispatch()
22
 
23
  const fetchSpecificFeed = () =>
24
    dispatch(fetchFeeds(timelineUrl + '/feed/' + feed, 1))
25
 
26
  useEffect(() => {
27
    if (feed) {
28
      return fetchSpecificFeed()
29
    } else {
30
      return dispatch(fetchFeeds(timelineUrl, currentPage))
31
    }
32
  }, [timelineUrl, currentPage, feed])
33
 
34
  const onChangePageHandler = (currentPage) => {
35
    dispatch(setCurrentPage(currentPage))
36
    dispatch(fetchFeeds(timelineUrl, currentPage))
37
    window.scrollTo(0, 0)
38
  }
39
 
40
  if (loading) {
41
    return <Spinner />
42
  }
43
 
44
  return (
45
    <>
46
      {allFeeds.length ? (
47
        allFeeds.map((feed, index) => {
48
          if (isMobile && isDashboard && index === 5) {
49
            const PeopleYouMayKnow = React.lazy(() =>
50
              import('../widgets/default/PeopleYouMayKnow')
51
            )
52
            return (
53
              <>
54
                <Suspense fallback={null}>
55
                  <PeopleYouMayKnow />
56
                </Suspense>
57
                <Feed
58
                  feed={feed}
59
                  key={feed.feed_unique}
60
                  owner_shared={feed.owner_shared}
61
                  image={image}
62
                />
63
              </>
64
            )
65
          }
66
          if (isMobile && isDashboard && index === 8) {
67
            const HomeNews = React.lazy(() =>
68
              import('../widgets/default/HomeNews')
69
            )
70
 
71
            return (
72
              <>
73
                <Suspense fallback={null}>
74
                  <HomeNews />
75
                </Suspense>
76
                <Feed
77
                  feed={feed}
78
                  key={feed.feed_unique}
79
                  owner_shared={feed.owner_shared}
80
                  image={image}
81
                />
82
              </>
83
            )
84
          }
85
          return (
86
            <Feed
87
              feed={feed}
88
              key={feed.feed_unique}
89
              owner_shared={feed.owner_shared}
90
              image={image}
91
            />
92
          )
93
        })
94
      ) : (
6619 stevensc 95
        <EmptySection message={labels.not_available_feeds} />
6618 stevensc 96
      )}
97
      <Suspense fallback={null}>
98
        <PaginationComponent
99
          onChangePage={onChangePageHandler}
100
          pages={pages}
101
          isRow
102
          currentActivePage={currentPage}
103
        />
104
      </Suspense>
105
    </>
106
  )
107
}
108
 
109
export default React.memo(FeedSection)