Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 4637 | Rev 5223 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3572 stevensc 1
/* eslint-disable react/prop-types */
5182 stevensc 2
import React, { useEffect, useState } from 'react'
2616 stevensc 3
import { axios } from '../../utils'
5182 stevensc 4
import CapsulesList from './CapsulesList'
1 www 5
 
5182 stevensc 6
const MarketPlace = () => {
7
  const [capsules, setCapsules] = useState([])
8
  const [categories, setCategories] = useState([])
9
  const [searchParams, setSearchParams] = useState({
10
    search: '',
11
    category: 'capsules'
12
  })
2620 stevensc 13
 
5182 stevensc 14
  const handleChange = ({ target }) => setSearchParams({ ...searchParams, [target.name]: target.value })
1 www 15
 
5182 stevensc 16
  const load = async (_search = searchParams.search, _entity = searchParams.category) => {
17
    try {
18
      const { data } = await axios.get('/marketplace?search=' + _search + '&entity=' + _entity)
19
      if (data.success) setCapsules(data.data)
20
    } catch (error) {
21
      console.log('>>: error > ', error)
3753 stevensc 22
    }
5182 stevensc 23
  }
3753 stevensc 24
 
5182 stevensc 25
  const getCategories = async () => {
26
    const categories = await axios.get('/marketplace/categories')
27
    if (categories.data.data) {
28
      const _categories = Object.keys(categories.data.data).map(element => {
29
        return {
30
          label: categories.data.data[element],
31
          value: element
1 www 32
        }
5182 stevensc 33
      })
34
      setCategories(_categories)
1 www 35
    }
5182 stevensc 36
  }
3753 stevensc 37
 
5182 stevensc 38
  const checkParams = () => {
39
    const url = window.location.href
40
    const hasEntity = url.includes('?entity=')
41
    if (hasEntity) {
42
      const value = url.split('?entity=')[1]
43
      if (value) { setSearchParams({ ...searchParams, category: value }) }
1 www 44
    }
5182 stevensc 45
  }
3753 stevensc 46
 
5182 stevensc 47
  useEffect(() => {
48
    getCategories()
49
    checkParams()
50
  }, [])
3753 stevensc 51
 
5182 stevensc 52
  useEffect(() => {
53
    load(searchParams.search, searchParams.category)
54
  }, [searchParams])
1 www 55
 
5182 stevensc 56
  return (
57
        <section className="companies-info container">
58
            <div className="market_admin_title_buttons">
59
                <div className="form-group search_input">
60
                    <input
61
                        type="text"
62
                        name="search"
63
                        className="form-control"
64
                        onChange={e => handleChange(e)}
65
                        value={searchParams.search}
66
                    />
67
                    <button className='search-btn'>{LABELS.SEARCH}</button>
2616 stevensc 68
                </div>
5182 stevensc 69
                <div className="form-group search_categories">
70
                    <select
71
                        name="select"
72
                        className="form-control"
73
                        value={searchParams.category}
74
                        onChange={e => handleChange(e)}
75
                    >
76
                        <option value="">{LABELS.SELECT_CATEGORY}</option>
77
                        {categories.map((element, i) =>
78
                            <option value={element.value} key={i}>{element.label}</option>
79
                        )}
80
                    </select>
81
                </div>
82
            </div>
83
            <CapsulesList capsules={capsules} onEnroll={load}/>
84
        </section>
85
  )
3572 stevensc 86
}
87
 
5182 stevensc 88
export default MarketPlace