Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 5698 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3993 stevensc 1
/* eslint-disable react/prop-types */
5106 stevensc 2
import React, { Suspense, useEffect } from 'react'
3
import { useDispatch, useSelector } from 'react-redux'
4
import { fetchFeeds, setCurrentPage } from '../../../redux/feed/feed.actions'
5
import EmptySection from '../../../shared/empty-section/EmptySection'
6
import Spinner from '../../../shared/loading-spinner/Spinner'
7
import Feed from '../feed/FeedTemplate'
4017 stevensc 8
 
5106 stevensc 9
const ShareModal = React.lazy(() => import('../share-modal/ShareModal'))
5698 stevensc 10
const PaginationComponent = React.lazy(() =>
11
  import('../../../shared/pagination/PaginationComponent')
12
)
5106 stevensc 13
 
4022 stevensc 14
const isDashboard = window.location.pathname.includes('dashboard')
4912 stevensc 15
const isMobile = window.innerWidth < 768
3993 stevensc 16
 
4017 stevensc 17
const FeedSection = ({ feed, image }) => {
5698 stevensc 18
  const { allFeeds, timelineUrl, pages, currentPage, loading } = useSelector(
19
    (state) => state.feed
20
  )
3993 stevensc 21
  const dispatch = useDispatch()
5698 stevensc 22
  const labels = useSelector((state) => state.labels)
3993 stevensc 23
 
5698 stevensc 24
  const fetchSpecificFeed = () =>
25
    dispatch(fetchFeeds(timelineUrl + '/feed/' + feed, 1))
3993 stevensc 26
 
27
  useEffect(() => {
28
    if (feed) {
29
      return fetchSpecificFeed()
30
    } else {
31
      return dispatch(fetchFeeds(timelineUrl, currentPage))
32
    }
5908 stevensc 33
  }, [timelineUrl, currentPage, feed])
3993 stevensc 34
 
35
  const onChangePageHandler = (currentPage) => {
5106 stevensc 36
    dispatch(setCurrentPage(currentPage))
3993 stevensc 37
    dispatch(fetchFeeds(timelineUrl, currentPage))
5106 stevensc 38
    window.scrollTo(0, 0)
39
  }
3993 stevensc 40
 
4222 stevensc 41
  if (loading) {
42
    return <Spinner />
43
  }
44
 
3993 stevensc 45
  return (
46
    <>
5698 stevensc 47
      {allFeeds.length ? (
48
        allFeeds.map((feed, index) => {
4022 stevensc 49
          if (isMobile && isDashboard && index === 5) {
5698 stevensc 50
            const PeopleYouMayKnow = React.lazy(() =>
51
              import(
52
                '../../../shared/helpers/people-you-may-know/PeopleYouMayKnow'
53
              )
54
            )
4021 stevensc 55
            return (
56
              <>
4062 stevensc 57
                <Suspense fallback={null}>
58
                  <PeopleYouMayKnow />
59
                </Suspense>
4021 stevensc 60
                <Feed
61
                  feed={feed}
62
                  key={feed.feed_unique}
63
                  owner_shared={feed.owner_shared}
64
                  image={image}
65
                />
66
              </>
67
            )
68
          }
4022 stevensc 69
          if (isMobile && isDashboard && index === 8) {
5698 stevensc 70
            const HomeNews = React.lazy(() =>
71
              import('../home-section/HomeNews')
72
            )
4021 stevensc 73
            return (
74
              <>
4062 stevensc 75
                <Suspense fallback={null}>
76
                  <HomeNews />
77
                </Suspense>
4021 stevensc 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 (
4017 stevensc 88
            <Feed
3993 stevensc 89
              feed={feed}
90
              key={feed.feed_unique}
91
              owner_shared={feed.owner_shared}
92
              image={image}
4017 stevensc 93
            />
4021 stevensc 94
          )
95
        })
5698 stevensc 96
      ) : (
97
        <EmptySection message={labels.NOT_AVAILABLE_FEEDS} />
98
      )}
4022 stevensc 99
      <Suspense fallback={null}>
5698 stevensc 100
        <ShareModal timelineUrl={timelineUrl} currentPage={currentPage} />
4063 stevensc 101
      </Suspense>
102
      <Suspense fallback={null}>
4022 stevensc 103
        <PaginationComponent
104
          onChangePage={onChangePageHandler}
105
          pages={pages}
106
          isRow
107
          currentActivePage={currentPage}
108
        />
109
      </Suspense>
3993 stevensc 110
    </>
5106 stevensc 111
  )
112
}
3993 stevensc 113
 
5106 stevensc 114
export default React.memo(FeedSection)