Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 4017 | Ir a la última revisión | | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3993 stevensc 1
/* eslint-disable react/prop-types */
2
import React, { useEffect } from "react";
3
import { useDispatch, useSelector } from "react-redux";
4
import { fetchFeeds, setCurrentPage } from "../../../redux/feed/feed.actions";
5
 
6
import PeopleYouMayKnow from "../../../shared/helpers/people-you-may-know/PeopleYouMayKnow";
7
import Spinner from "../../../shared/loading-spinner/Spinner";
8
import PaginationComponent from "../../../shared/pagination/PaginationComponent";
9
import FeedContent from "../feed/FeedContent";
10
import FeedTemplate from "../feed/FeedTemplate";
11
import HomeNews from "../home-section/HomeNews";
12
import ShareModal from "../share-modal/ShareModal";
13
 
14
const PATH = window.location.pathname
15
 
16
const FeedSection = ({ routeTimeline, feed, image }) => {
17
 
18
  const { allFeeds, timelineUrl, pages, currentPage, loading } = useSelector((state) => state.feed)
19
  const dispatch = useDispatch()
20
 
21
 
22
  const fetchSpecificFeed = () => dispatch(fetchFeeds(timelineUrl + '/feed/' + feed, 1))
23
 
24
  useEffect(() => {
25
    if (feed) {
26
      return fetchSpecificFeed()
27
    } else {
28
      return dispatch(fetchFeeds(timelineUrl, currentPage))
29
    }
30
  }, []);
31
 
32
 
33
  const onChangePageHandler = (currentPage) => {
34
    dispatch(setCurrentPage(currentPage));
35
    dispatch(fetchFeeds(timelineUrl, currentPage))
36
    window.scrollTo(0, 0);
37
  };
38
 
39
  if (loading) return (
40
    <div className="w-100 h-100" style={{ display: "grid", placeItems: 'center' }}>
41
      <Spinner />
42
    </div>
43
  )
44
 
45
  return (
46
    <>
47
      {allFeeds.length
48
        ? allFeeds.map((feed, index) =>
49
          <>
50
            {
51
              (index === 5 && PATH.includes('dashboard')) &&
52
              <div className='d-block d-md-none'>
53
                <PeopleYouMayKnow />
54
              </div>
55
            }
56
            {
57
              (index === 8 && PATH.includes('dashboard')) &&
58
              < div className='d-block d-md-none'>
59
                <HomeNews />
60
              </div>
61
            }
62
            <FeedTemplate
63
              feed={feed}
64
              key={feed.feed_unique}
65
              owner_shared={feed.owner_shared}
66
              image={image}
67
            >
68
              <FeedContent
69
                isShare={feed.shared_name ? true : false}
70
                ownerFileImage={feed.owner_file_image}
71
                ownerFileVideo={feed.owner_file_video}
72
                ownerFileImagePreview={feed.owner_file_image_preview}
73
                ownerFileDocument={feed.owner_file_document}
74
                ownerDescription={feed.owner_description}
75
                sharedItem={{
76
                  name: feed.shared_name,
77
                  image: feed.shared_image,
78
                  time_elapse: feed.shared_time_elapse,
79
                  description: feed.shared_description,
80
                  file_video: feed.shared_file_video,
81
                  file_image_preview: feed.shared_file_image_preview,
82
                  file_image: feed.shared_file_image,
83
                  file_document: feed.shared_file_document
84
                }}
85
              />
86
            </FeedTemplate>
87
          </>)
88
        :
89
        <div style={{ display: 'grid', width: '100%', padding: '20px', placeItems: 'center' }}>
90
          <h2>No hay publicaciones</h2>
91
        </div>
92
      }
93
      <ShareModal
94
        timelineUrl={timelineUrl}
95
        currentPage={currentPage}
96
      />
97
      <PaginationComponent
98
        onChangePage={onChangePageHandler}
99
        pages={pages}
100
        isRow
101
        currentActivePage={currentPage}
102
      />
103
    </>
104
  );
105
};
106
 
107
export default React.memo(FeedSection);