Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 5182 | Rev 5225 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

/* eslint-disable react/prop-types */
import React, { useEffect, useState } from 'react'
import { axios } from '../../utils'
import CapsulesList from './CapsulesList'
import RewardsList from './RewardsList'


const MarketPlace = () => {
  const [capsules, setCapsules] = useState([])
  const [rewards, setRewards] = useState([])
  const [categories, setCategories] = useState([])
  const [searchParams, setSearchParams] = useState({
    search: '',
    category: 'rewards'
  })

  const handleChange = ({ target }) => setSearchParams({ ...searchParams, [target.name]: target.value })

  const load = async (_search = searchParams.search, _entity = searchParams.category) => {
    try {
      const { data } = await axios.get('/marketplace?search=' + _search + '&entity=' + _entity)
      
      if(_entity == 'capsules') {
        if (data.success) setCapsules(data.data)
      }
                if(_entity == 'rewards') {
        if (data.success) setRewards(data.data)
      }
    } catch (error) {
      console.log('>>: 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.href
    const 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 (
        <section className="companies-info container">
            <div className="market_admin_title_buttons">
                <div className="form-group search_input">
                    <input
                        type="text"
                        name="search"
                        className="form-control"
                        onChange={e => handleChange(e)}
                        value={searchParams.search}
                    />
                    <button className='search-btn'>{LABELS.SEARCH}</button>
                </div>
                <div className="form-group search_categories">
                    <select
                        name="category"
                        className="form-control"
                        value={searchParams.category}
                        onChange={e => handleChange(e)}
                    >
                        <option value="">{LABELS.SELECT_CATEGORY}</option>
                        {categories.map((element, i) =>
                            <option value={element.value} key={i}>{element.label}</option>
                        )}
                    </select>
                </div>
            </div>
            {searchParams.category == 'capsules' && 
                <CapsulesList capsules={capsules} onEnroll={load}/>
            }
            {searchParams.category == 'rewards' && 
                <RewardsList rewards={rewards} onClaim={load}/>
                }
        </section>
  )
}

export default MarketPlace