Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 6623 | | 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
 
6832 stevensc 5
import Feed from '../feed/Feed'
6
import Spinner from '../UI/Spinner'
6618 stevensc 7
import EmptySection from '../UI/EmptySection'
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
 
6622 stevensc 23
  const fetchSpecificFeed = () => {
6618 stevensc 24
    dispatch(fetchFeeds(timelineUrl + '/feed/' + feed, 1))
6622 stevensc 25
  }
6618 stevensc 26
 
27
  useEffect(() => {
28
    if (feed) {
6623 stevensc 29
      fetchSpecificFeed()
30
      return
6618 stevensc 31
    }
6623 stevensc 32
 
33
    dispatch(fetchFeeds(timelineUrl, currentPage))
6618 stevensc 34
  }, [timelineUrl, currentPage, feed])
35
 
36
  const onChangePageHandler = (currentPage) => {
37
    dispatch(setCurrentPage(currentPage))
38
    dispatch(fetchFeeds(timelineUrl, currentPage))
39
    window.scrollTo(0, 0)
40
  }
41
 
42
  if (loading) {
43
    return <Spinner />
44
  }
45
 
46
  return (
47
    <>
48
      {allFeeds.length ? (
49
        allFeeds.map((feed, index) => {
50
          if (isMobile && isDashboard && index === 5) {
51
            const PeopleYouMayKnow = React.lazy(() =>
52
              import('../widgets/default/PeopleYouMayKnow')
53
            )
54
            return (
55
              <>
56
                <Suspense fallback={null}>
57
                  <PeopleYouMayKnow />
58
                </Suspense>
59
                <Feed
60
                  feed={feed}
61
                  key={feed.feed_unique}
62
                  owner_shared={feed.owner_shared}
63
                  image={image}
64
                />
65
              </>
66
            )
67
          }
68
          if (isMobile && isDashboard && index === 8) {
69
            const HomeNews = React.lazy(() =>
70
              import('../widgets/default/HomeNews')
71
            )
72
 
73
            return (
74
              <>
75
                <Suspense fallback={null}>
76
                  <HomeNews />
77
                </Suspense>
78
                <Feed
79
                  feed={feed}
80
                  key={feed.feed_unique}
81
                  owner_shared={feed.owner_shared}
82
                  image={image}
83
                />
84
              </>
85
            )
86
          }
87
          return (
88
            <Feed
89
              feed={feed}
90
              key={feed.feed_unique}
91
              owner_shared={feed.owner_shared}
92
              image={image}
93
            />
94
          )
95
        })
96
      ) : (
6619 stevensc 97
        <EmptySection message={labels.not_available_feeds} />
6618 stevensc 98
      )}
99
      <Suspense fallback={null}>
100
        <PaginationComponent
101
          onChangePage={onChangePageHandler}
102
          pages={pages}
103
          isRow
104
          currentActivePage={currentPage}
105
        />
106
      </Suspense>
107
    </>
108
  )
109
}
110
 
111
export default React.memo(FeedSection)