Rev 6996 | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useEffect, useState } from 'react'import { axios } from '../../utils'import { useDispatch } from 'react-redux'import { addNotification } from '../../redux/notification/notification.actions'import { Col, Container, FormControl, Row } from 'react-bootstrap'import CapsulesList from '../../components/marketplace/CapsulesList'const MarketPlacePage = () => {const [capsules, setCapsules] = useState([])const [rewards, setRewards] = useState([])const [categories, setCategories] = useState([])const [searchParams, setSearchParams] = useState({search: '',category: 'capsules',})const dispatch = useDispatch()const handleChange = ({ target }) => {setSearchParams({ ...searchParams, [target.name]: target.value })}const load = async (_search = searchParams.search,_entity = searchParams.category) => {axios.get(`/marketplace?search=${_search}&entity=${_entity}`).then((response) => {const { success, data } = response.dataif (!success) {dispatch(addNotification({ style: 'danger', msg: data }))return}_entity === 'capsules' ? setCapsules(data) : setRewards(data)}).catch((error) => {console.log('>>: error > ', error)dispatch(addNotification({ style: 'danger', msg: error }))throw new Error(error)})}const getCategories = async () => {const categories = await axios.get('/marketplace/categories')if (categories.data.data) {const _categories = Object.keys(categories.data.data).map((element) => {return {label: categories.data.data[element],value: element,}})setCategories(_categories)}}const checkParams = () => {const url = window.location.hrefconst hasEntity = url.includes('?entity=')if (hasEntity) {const value = url.split('?entity=')[1]if (value) {setSearchParams({ ...searchParams, category: value })}}}useEffect(() => {getCategories()checkParams()}, [])useEffect(() => {load(searchParams.search, searchParams.category)}, [searchParams])return (<Container><Row className="justify-content-end"><Col md="3"><FormControlas="select"name="category"onChange={(e) => handleChange(e)}value={searchParams.category}>{categories.map((element, i) => (<option value={element.value} key={i}>{element.label}</option>))}</FormControl></Col><Col md="3"><FormControltype="text"name="search"onChange={(e) => handleChange(e)}value={searchParams.search}/></Col></Row><h2 className="mt-3 font-bold">{searchParams.category === 'capsules' ? 'Cápsulas' : 'Recompensas'} deMicroaprendizaje</h2><CapsulesListcapsules={searchParams.category === 'capsules' ? capsules : rewards}onEnroll={load}/></Container>)}export default MarketPlacePage