Proyectos de Subversion LeadersLinked - SPA

Rev

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