Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3108 | Rev 3432 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

import React, { useEffect } from "react";
import { useDispatch, useSelector } from "react-redux";
import { useParams } from "react-router-dom";

import { useFetch } from "@hooks";
import {
  fetchFeeds,
  setCurrentPage,
  setTimelineUrl,
} from "@store/feed/feed.actions";

import AppGrid from "@components/UI/layout/AppGrid";
import Spinner from "@components/UI/Spinner";
import Pagination from "@components/common/Pagination";
import FeedList from "@components/dashboard/linkedin/feed-list/FeedList";
import CompanyFollowers from "@components/company/company-followers";
import CompanyWidget from "@components/company/company-widget";
import AboutCompany from "@components/company/about-company";
import CompanyInfo from "@components/company/company-info";

export default function LinkedInCompany() {
  const { uuid } = useParams();
  const dispatch = useDispatch();
  const { feeds, timelineUrl, currentPage, loading, pages } = useSelector(
    ({ feed }) => feed
  );

  const {
    data,
    loading: loadingCompany,
    refetch,
  } = useFetch(`/company/view/${uuid}`);

  const isFollower = !!data.link_unfollow;
  const allFeeds = feeds.allIds.map((id) => feeds.byId[id]);

  const onChangePageHandler = (currentPage) => {
    dispatch(setCurrentPage(currentPage));
    window.scrollTo(0, 0);
  };

  useEffect(() => {
    dispatch(fetchFeeds(timelineUrl, currentPage));
  }, [timelineUrl, currentPage]);

  useEffect(() => {
    dispatch(setTimelineUrl(data.link_timeline));
  }, [data]);

  if (loadingCompany) {
    return <Spinner />;
  }

  return (
    <AppGrid
      renderSidebar={() => <CompanyInfo company={data} />}
      renderMain={() => (
        <>
          <CompanyWidget company={data} refetch={refetch} />
          {loading && <Spinner />}
          {!isFollower && <AboutCompany company={data} />}
          {isFollower && !loading && (
            <>
              <FeedList feeds={allFeeds} />
              <Pagination
                pages={pages}
                page={currentPage}
                onChange={onChangePageHandler}
              />
            </>
          )}
        </>
      )}
      renderAside={() => (
        <>
          <CompanyFollowers companyId={uuid} />
          <AboutCompany company={data} />
        </>
      )}
    />
  );
}