Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 2194 | Rev 2805 | 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
 
1811 stevensc 21
import './styles/linkedin.scss'
22
 
5 stevensc 23
const LinkedInCompany = () => {
856 stevensc 24
  const [backendVars, setBackendVars] = useState(null)
1809 stevensc 25
  const [actionsUrls, setActionsUrls] = useState({})
856 stevensc 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(() => {
2196 stevensc 56
    dispatch(fetchFeeds(timelineUrl, currentPage))
1688 stevensc 57
  }, [timelineUrl, currentPage])
58
 
1802 stevensc 59
  useEffect(() => {
1803 stevensc 60
    getCompanyVars()
1802 stevensc 61
  }, [uuid])
62
 
5 stevensc 63
  return (
1800 stevensc 64
    <Container>
65
      <AppGrid
66
        renderSidebar={() => (
5 stevensc 67
          <GroupInfo
68
            cover={backendVars?.cover}
69
            image={backendVars?.image}
70
            name={backendVars?.company_name}
71
            overview={backendVars?.overview}
72
            id={backendVars?.company_uuid}
73
            totalMembers={backendVars?.total_followers}
74
            groupType={backendVars?.company_size}
75
            accessibility={backendVars?.industry}
76
          />
1800 stevensc 77
        )}
78
        renderMain={() => (
79
          <>
80
            <CompanyActions
81
              name={backendVars?.company_name}
82
              image={backendVars?.image}
83
              companyId={backendVars?.company_uuid}
84
              cover={backendVars?.cover}
85
              overview={backendVars?.overview}
86
              refetch={getCompanyVars}
87
              actionLinks={actionsUrls}
88
            />
89
            {!isFollower ? <AboutCompany {...backendVars} /> : null}
90
            {isFollower && !loading ? <FeedList feeds={allFeeds} /> : null}
91
            <PaginationComponent
92
              pages={pages}
93
              currentActivePage={currentPage}
94
              onChangePage={onChangePageHandler}
95
            />
96
          </>
97
        )}
98
        renderAside={() => (
99
          <>
100
            <CompanyFollowers companyId={uuid} />
5 stevensc 101
            <AboutCompany {...backendVars} />
1800 stevensc 102
          </>
103
        )}
104
      />
105
    </Container>
856 stevensc 106
  )
107
}
5 stevensc 108
 
856 stevensc 109
export default LinkedInCompany