Rev 7003 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useState, useRef, useEffect } from 'react'import { Container } from 'react-bootstrap'import { useLocation } from 'react-router-dom'import { useForm } from 'react-hook-form'import { axios, jsonToParams } from '../../utils'import Spinner from '../../components/UI/Spinner'import SearchItem from '../../components/search/SearchItem'import SearchInput from '../../components/UI/SearchInput'import EmptySection from '../../components/UI/EmptySection'import PaginationComponent from '../../components/UI/PaginationComponent'const SearchPage = () => {const [entities, setEntities] = useState([])const [loading, setLoading] = useState(true)const [category, setCategory] = useState('user')const [currentPage, setCurrentPage] = useState(1)const [pages, setPages] = useState(1)const activeFilters = useRef([])const addressFilter = useRef([])const { search, pathname } = useLocation()const { register, handleSubmit, setValue, getValues } = useForm()// getting keywordconst locationParams = new URLSearchParams(search)const keyword = locationParams.get('keyword')useEffect(() => {loadEntities()}, [keyword])const loadEntities = async (page = 1) => {setLoading(true)setCurrentPage(page)const urlParams = { page, keyword }addressFilter.current.forEach(({ name, type }) => {urlParams[type] = name})activeFilters.current.forEach(({ name, value }) => {urlParams[name] = value})await axios.get(`/search/entity/${category}?${jsonToParams(urlParams)}`).then((response) => {const { success, data } = response.dataif (success) {setEntities(data.current.items)setPages(data.total.pages)}})setLoading(false)}const onChangePageHandler = (currentPage) => {setCurrentPage(currentPage)}useEffect(() => {setValue('keyword', keyword)register('keyword')}, [])const onSubmitHandler = handleSubmit(({ keyword }) => {history.push({ pathname, search: `?keyword=${keyword}` })})return (<><SearchInputas="form"onSubmit={onSubmitHandler}onChange={(e) => setValue('keyword', e.target.value)}value={getValues('keyword')}/><Container className="main-section-data mt-3"><div></div><div className="main-ws-sec"><div className="posts-section">{loading && <Spinner />}{entities.length ? (entities.map((entity) => (<SearchItemkey={entity.id}onChangePage={onChangePageHandler}{...entity}/>))) : (<EmptySection message="No hay resultados" />)}</div><PaginationComponentpages={pages}currentActivePage={currentPage}onChangePage={loadEntities}isRow/></div><div className="right-sidebar" /></Container></>)}export default SearchPage