Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
856 stevensc 1
import React, { useEffect, useState } from 'react'
1800 stevensc 2
import { useDispatch, useSelector } from 'react-redux'
856 stevensc 3
import { useParams } from 'react-router-dom'
1800 stevensc 4
import { Container } from '@mui/material'
5 stevensc 5
 
1688 stevensc 6
import {
7
  fetchFeeds,
8
  setCurrentPage,
9
  setTimelineUrl
10
} from '../../redux/feed/feed.actions'
11
import { getBackendVars } from '../../services/backendVars'
12
 
13
import PaginationComponent from '@app/components/UI/PaginationComponent'
1800 stevensc 14
import AppGrid from '@app/components/UI/layout/AppGrid'
15
import AboutCompany from '@app/components/company/AboutCompany'
16
import CompanyActions from '@app/components/company/CompanyActions'
17
import CompanyFollowers from '@app/components/company/CompanyFollowers'
18
import FeedList from '@app/components/dashboard/linkedin/feed-list/FeedList'
19
import GroupInfo from '@app/components/widgets/linkedin/InfoWidget'
5 stevensc 20
 
856 stevensc 21
import './styles/linkedin.scss'
5 stevensc 22
 
23
const LinkedInCompany = () => {
856 stevensc 24
  const [backendVars, setBackendVars] = useState(null)
25
  const [actionsUrls, setActionsUrls] = useState(null)
26
  const [isFollower, setIsFollower] = useState(false)
1688 stevensc 27
  const { feeds, timelineUrl, currentPage, loading, pages } = useSelector(
28
    ({ feed }) => feed
29
  )
30
  const allFeeds = feeds.allIds.map((id) => feeds.byId[id])
856 stevensc 31
  const { uuid } = useParams()
32
  const dispatch = useDispatch()
5 stevensc 33
 
34
  const getCompanyVars = () => {
1688 stevensc 35
    getBackendVars(`/company/view/${uuid}`).then((vars) => {
36
      const actions = {}
5 stevensc 37
 
1688 stevensc 38
      Object.entries(vars).forEach(([key, value]) => {
39
        if (!key.includes('link')) return
40
        actions[key] = value
41
      })
5 stevensc 42
 
1688 stevensc 43
      setActionsUrls(actions)
44
      dispatch(setTimelineUrl(vars.link_timeline))
45
      setIsFollower(!!vars.link_unfollow)
46
      setBackendVars(vars)
47
    })
48
  }
5 stevensc 49
 
1688 stevensc 50
  const onChangePageHandler = (currentPage) => {
51
    dispatch(setCurrentPage(currentPage))
52
    window.scrollTo(0, 0)
856 stevensc 53
  }
5 stevensc 54
 
55
  useEffect(() => {
1688 stevensc 56
    dispatch(fetchFeeds(timelineUrl, currentPage))
57
  }, [timelineUrl, currentPage])
58
 
5 stevensc 59
  return (
1800 stevensc 60
    <Container>
61
      <AppGrid
62
        renderSidebar={() => (
5 stevensc 63
          <GroupInfo
64
            cover={backendVars?.cover}
65
            image={backendVars?.image}
66
            name={backendVars?.company_name}
67
            overview={backendVars?.overview}
68
            id={backendVars?.company_uuid}
69
            totalMembers={backendVars?.total_followers}
70
            groupType={backendVars?.company_size}
71
            accessibility={backendVars?.industry}
72
          />
1800 stevensc 73
        )}
74
        renderMain={() => (
75
          <>
76
            <CompanyActions
77
              name={backendVars?.company_name}
78
              image={backendVars?.image}
79
              companyId={backendVars?.company_uuid}
80
              cover={backendVars?.cover}
81
              overview={backendVars?.overview}
82
              refetch={getCompanyVars}
83
              actionLinks={actionsUrls}
84
            />
85
            {!isFollower ? <AboutCompany {...backendVars} /> : null}
86
            {isFollower && !loading ? <FeedList feeds={allFeeds} /> : null}
87
            <PaginationComponent
88
              pages={pages}
89
              currentActivePage={currentPage}
90
              onChangePage={onChangePageHandler}
91
            />
92
          </>
93
        )}
94
        renderAside={() => (
95
          <>
96
            <CompanyFollowers companyId={uuid} />
5 stevensc 97
            <AboutCompany {...backendVars} />
1800 stevensc 98
          </>
99
        )}
100
      />
101
    </Container>
856 stevensc 102
  )
103
}
5 stevensc 104
 
856 stevensc 105
export default LinkedInCompany