Proyectos de Subversion LeadersLinked - SPA

Rev

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