Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
3993 stevensc 1
/* eslint-disable react/prop-types */
4019 stevensc 2
import React, { Suspense, useEffect } from "react";
3993 stevensc 3
import { useDispatch, useSelector } from "react-redux";
4
import { fetchFeeds, setCurrentPage } from "../../../redux/feed/feed.actions";
5
 
6
import Spinner from "../../../shared/loading-spinner/Spinner";
4017 stevensc 7
import Feed from "../feed/FeedTemplate";
3993 stevensc 8
 
4017 stevensc 9
const ShareModal = React.lazy(() => import("../share-modal/ShareModal"))
10
const HomeNews = React.lazy(() => import("../home-section/HomeNews"))
4019 stevensc 11
const PeopleYouMayKnow = React.lazy(() => { if (window.innerWidth < 1000) return import("../../../shared/helpers/people-you-may-know/PeopleYouMayKnow") })
4017 stevensc 12
const PaginationComponent = React.lazy(() => import("../../../shared/pagination/PaginationComponent"))
13
 
3993 stevensc 14
const PATH = window.location.pathname
15
 
4017 stevensc 16
// Props object {routeTimeline, feed, image}
3993 stevensc 17
 
4017 stevensc 18
const FeedSection = ({ feed, image }) => {
19
 
3993 stevensc 20
  const { allFeeds, timelineUrl, pages, currentPage, loading } = useSelector((state) => state.feed)
21
  const dispatch = useDispatch()
22
 
23
 
24
  const fetchSpecificFeed = () => 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
  }, []);
33
 
34
 
35
  const onChangePageHandler = (currentPage) => {
36
    dispatch(setCurrentPage(currentPage));
37
    dispatch(fetchFeeds(timelineUrl, currentPage))
38
    window.scrollTo(0, 0);
39
  };
40
 
41
  if (loading) return (
42
    <div className="w-100 h-100" style={{ display: "grid", placeItems: 'center' }}>
43
      <Spinner />
44
    </div>
45
  )
46
 
47
  return (
48
    <>
49
      {allFeeds.length
50
        ? allFeeds.map((feed, index) =>
51
          <>
52
            {
53
              (index === 5 && PATH.includes('dashboard')) &&
4019 stevensc 54
              <Suspense fallback={<Spinner />}>
55
                <div className='d-block d-md-none'>
56
                  <PeopleYouMayKnow />
57
                </div>
58
              </Suspense>
3993 stevensc 59
            }
60
            {
61
              (index === 8 && PATH.includes('dashboard')) &&
62
              < div className='d-block d-md-none'>
63
                <HomeNews />
64
              </div>
65
            }
4017 stevensc 66
            <Feed
3993 stevensc 67
              feed={feed}
68
              key={feed.feed_unique}
69
              owner_shared={feed.owner_shared}
70
              image={image}
4017 stevensc 71
            />
72
          </>
73
        )
3993 stevensc 74
        :
75
        <div style={{ display: 'grid', width: '100%', padding: '20px', placeItems: 'center' }}>
76
          <h2>No hay publicaciones</h2>
77
        </div>
78
      }
79
      <ShareModal
80
        timelineUrl={timelineUrl}
81
        currentPage={currentPage}
82
      />
83
      <PaginationComponent
4019 stevensc 84
        isRow
85
        currentActivePage={currentPage}
3993 stevensc 86
        onChangePage={onChangePageHandler}
87
        pages={pages}
88
      />
89
    </>
90
  );
91
};
92
 
93
export default React.memo(FeedSection);