Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
1619 stevensc 1
import React from 'react'
5 stevensc 2
import { useSelector } from 'react-redux'
3
 
2806 stevensc 4
import { debounce, jsonToParams } from '../../utils'
2780 stevensc 5
import { useFetch, useSearchParams } from '@hooks'
6
 
5 stevensc 7
import Spinner from '../../components/UI/Spinner'
8
import SearchBar from '../../components/UI/SearchBar'
9
import ProfileItem from '../../components/profile/ProfileItem'
10
import EmptySection from '../../components/UI/EmptySection'
11
import TitleSection from '../../components/UI/TitleSection'
12
import LoaderContainer from '../../components/UI/LoaderContainer'
13
import PaginationComponent from '../../components/UI/PaginationComponent'
14
 
15
const ImpersonatePage = () => {
1619 stevensc 16
  const { setParams, params } = useSearchParams()
1622 stevensc 17
  const { data, isLoading } = useFetch(
1623 stevensc 18
    `/impersonate?${jsonToParams(params)}`,
1622 stevensc 19
    {}
20
  )
5 stevensc 21
  const labels = useSelector(({ intl }) => intl.labels)
22
 
1619 stevensc 23
  const handleSearch = debounce((value) => setParams('keyword', value), 500)
5 stevensc 24
 
1619 stevensc 25
  return (
2806 stevensc 26
    <>
1619 stevensc 27
      <TitleSection title='Usuarios disponibles a personalizar' />
5 stevensc 28
 
1619 stevensc 29
      <SearchBar onChange={handleSearch} />
5 stevensc 30
 
1619 stevensc 31
      {isLoading ? (
32
        <LoaderContainer>
33
          <Spinner />
34
        </LoaderContainer>
35
      ) : (
36
        <ul className='companies-list mt-3'>
1620 stevensc 37
          {data.current?.items?.length > 0 ? (
38
            data.current?.items?.map(
1619 stevensc 39
              ({ image, name, email, network, link_impersonate }, id) => (
40
                <ProfileItem
41
                  isTopData
42
                  key={id}
43
                  image={image}
44
                  name={name}
45
                  email={email}
46
                  network={network}
47
                  link_impersonate={link_impersonate}
48
                />
5 stevensc 49
              )
1619 stevensc 50
            )
51
          ) : (
52
            <EmptySection
53
              align='left'
54
              message={labels.datatable_szerorecords}
55
            />
56
          )}
57
        </ul>
58
      )}
59
      <PaginationComponent
1620 stevensc 60
        pages={data.total?.pages}
61
        currentActivePage={data.current?.page}
1619 stevensc 62
        onChangePage={(newPage) => setParams('page', newPage)}
63
        isRow
64
      />
2806 stevensc 65
    </>
5 stevensc 66
  )
67
}
68
 
69
export default ImpersonatePage