Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
6753 stevensc 1
import React, { useEffect, useState } from 'react'
2
import { useDispatch, useSelector } from 'react-redux'
3
import { debounce } from '../../utils'
4
import { addNotification } from '../../redux/notification/notification.actions'
5
import { searchEntities } from '../../services/items'
6
 
7
import Spinner from '../../components/UI/Spinner'
8
import SearchBar from '../../components/UI/SearchBar'
9
import ProfileItem from '../../components/profile/ProfileItem'
10
import TitleSection from '../../components/UI/TitleSection'
11
import EmptySection from '../../components/UI/EmptySection'
12
import LoaderContainer from '../../components/UI/LoaderContainer'
13
import AddCompanyModal from '../../components/modals/AddCompanyModal'
14
 
15
const MyCompanies = () => {
16
  const [companies, setCompanies] = useState([])
17
  const [loading, setLoading] = useState(true)
18
  const [showAddCompanyModal, setShowCompanyModal] = useState(false)
19
  const [search, setSearch] = useState('')
20
 
21
  const labels = useSelector(({ intl }) => intl.labels)
22
  const dispatch = useDispatch()
23
 
24
  const getMyCompanies = async (searchValue = '') => {
25
    setLoading(true)
26
    const response = await searchEntities('company/my-companies', searchValue)
27
 
28
    if (!response.success) {
29
      dispatch(addNotification({ style: 'danger', msg: response.data }))
30
      setLoading(false)
31
      return
32
    }
33
 
34
    setCompanies(response.data)
35
    setLoading(false)
36
  }
37
 
38
  const toggleShowCompanyModal = () => {
39
    setShowCompanyModal(!showAddCompanyModal)
40
  }
41
 
42
  const handleSearch = debounce((value) => setSearch(value), 500)
43
 
44
  useEffect(() => {
45
    getMyCompanies()
46
  }, [search])
47
 
48
  return (
49
    <main className="companies-info container">
50
      <TitleSection
51
        title={labels.my_companies}
52
        onAdd={toggleShowCompanyModal}
53
        addLabel={labels.add_company}
54
      />
55
      <SearchBar onChange={handleSearch} />
56
      {loading ? (
57
        <LoaderContainer>
58
          <Spinner />
59
        </LoaderContainer>
60
      ) : (
61
        <ul className="companies-list">
62
          {companies.length ? (
63
            companies.map(({ id, link_my_company, ...rest }) => (
64
              <ProfileItem
65
                key={id}
66
                link_admin={link_my_company}
67
                btnAcceptTitle={labels.view_company}
68
                {...rest}
69
              />
70
            ))
71
          ) : (
72
            <EmptySection
73
              align="left"
74
              message={labels.datatable_szerorecords}
75
            />
76
          )}
77
        </ul>
78
      )}
79
      <AddCompanyModal
80
        show={showAddCompanyModal}
81
        onHide={toggleShowCompanyModal}
82
        fetchCompanies={getMyCompanies}
83
        companySizes={{}}
84
        industries={{}}
85
      />
86
    </main>
87
  )
88
}
89
 
90
export default MyCompanies