AutorÃa | Ultima modificación | Ver Log |
/* eslint-disable camelcase */import React, { useEffect, useState } from 'react'import { useForm } from 'react-hook-form'import { connect } from 'react-redux'import { axios, jsonToParams } from '../../utils'import { addNotification } from '../../redux/notification/notification.actions'import Profile from '../../components/Profile'import Spinner from '../../shared/loading-spinner/Spinner'import PaginationComponent from '../../shared/pagination/PaginationComponent'const Impersonate = () => {const [users, setUsers] = useState([])const [loading, setLoading] = useState(true)const [error, setError] = useState('')const [currentPage, setCurrentPage] = useState(1)const [pages, setPages] = useState(1)const { register, getValues } = useForm()useEffect(() => {fetchUsers()}, [])const handleSearch = () => {const searchValue = getValues('search')setTimeout(() => fetchUsers(1, searchValue), [500])}const fetchUsers = async (page = 1, keyword = '') => {setLoading(true)setError(false)setCurrentPage(page)const urlParams = {page,keyword}await axios.get(`/impersonate?${jsonToParams(urlParams)}`).then((response) => {const responseData = response.dataif (responseData.success) {setUsers(responseData.data.current.items)setPages(responseData.data.total.pages)} else {const newError = responseData.datasetError(newError)}})setLoading(false)}return (<section className="companies-info"><div className="container"><div className="company-title"><div className="section_admin_title_buttons"><h1 className="title">Usuarios disponibles a personalizar</h1></div></div><div className="company-title"><div className="search-box border-gray border-radius"><div className="form-group"><inputtype="text"name="search"id="search"className="form-control"placeholder=""ref={register}onKeyUp={handleSearch}/></div></div></div><div className="companies-list position-relative" id="profiles-container">{users.length > 0? (users.map(({ image, name, email, network, link_impersonate }, id) => (<ProfileisTopDatakey={id}image={image}name={name}email={email}network={network}link_impersonate={link_impersonate}/>))): <p>No hay resultados</p>}{loading && <Spinner />}</div></div><PaginationComponentpages={pages}currentActivePage={currentPage}onChangePage={fetchUsers}/></section>)}const mapDispatchToProps = {addNotification: (notification) => addNotification(notification)}export default connect(null, mapDispatchToProps)(Impersonate)