Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 4019 | Rev 4021 | 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 */
4020 stevensc 2
import React, { useEffect, useState } 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"))
11
const PaginationComponent = React.lazy(() => import("../../../shared/pagination/PaginationComponent"))
12
 
3993 stevensc 13
const PATH = window.location.pathname
14
 
4017 stevensc 15
// Props object {routeTimeline, feed, image}
3993 stevensc 16
 
4017 stevensc 17
const FeedSection = ({ feed, image }) => {
18
 
3993 stevensc 19
  const { allFeeds, timelineUrl, pages, currentPage, loading } = useSelector((state) => state.feed)
4020 stevensc 20
  const [state, setState] = useState({
21
    PeopleYouMayKnow: null
22
  })
23
  const { PeopleYouMayKnow } = state
3993 stevensc 24
  const dispatch = useDispatch()
25
 
26
 
27
  const fetchSpecificFeed = () => dispatch(fetchFeeds(timelineUrl + '/feed/' + feed, 1))
28
 
29
  useEffect(() => {
30
    if (feed) {
31
      return fetchSpecificFeed()
32
    } else {
33
      return dispatch(fetchFeeds(timelineUrl, currentPage))
34
    }
35
  }, []);
36
 
4020 stevensc 37
  useEffect(async () => {
38
    if (window.innerWidth < 1000) {
39
      const { PeopleYouMayKnow } = await import("../../../shared/helpers/people-you-may-know/PeopleYouMayKnow")
3993 stevensc 40
 
4020 stevensc 41
      setState({ ...state, PeopleYouMayKnow })
42
    }
43
  }, []);
44
 
3993 stevensc 45
  const onChangePageHandler = (currentPage) => {
46
    dispatch(setCurrentPage(currentPage));
47
    dispatch(fetchFeeds(timelineUrl, currentPage))
48
    window.scrollTo(0, 0);
49
  };
50
 
51
  if (loading) return (
52
    <div className="w-100 h-100" style={{ display: "grid", placeItems: 'center' }}>
53
      <Spinner />
54
    </div>
55
  )
56
 
57
  return (
58
    <>
59
      {allFeeds.length
60
        ? allFeeds.map((feed, index) =>
61
          <>
62
            {
63
              (index === 5 && PATH.includes('dashboard')) &&
4020 stevensc 64
              <div className='d-block d-md-none'>
65
                <PeopleYouMayKnow />
66
              </div>
3993 stevensc 67
            }
68
            {
69
              (index === 8 && PATH.includes('dashboard')) &&
70
              < div className='d-block d-md-none'>
71
                <HomeNews />
72
              </div>
73
            }
4017 stevensc 74
            <Feed
3993 stevensc 75
              feed={feed}
76
              key={feed.feed_unique}
77
              owner_shared={feed.owner_shared}
78
              image={image}
4017 stevensc 79
            />
80
          </>
81
        )
3993 stevensc 82
        :
83
        <div style={{ display: 'grid', width: '100%', padding: '20px', placeItems: 'center' }}>
84
          <h2>No hay publicaciones</h2>
85
        </div>
86
      }
87
      <ShareModal
88
        timelineUrl={timelineUrl}
89
        currentPage={currentPage}
90
      />
91
      <PaginationComponent
4020 stevensc 92
        onChangePage={onChangePageHandler}
93
        pages={pages}
4019 stevensc 94
        isRow
95
        currentActivePage={currentPage}
3993 stevensc 96
      />
97
    </>
98
  );
99
};
100
 
101
export default React.memo(FeedSection);