Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 5300 | | 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'
5225 stevensc 3
import { useDispatch } from 'react-redux'
4
import { addNotification } from '../../redux/notification/notification.actions'
2616 stevensc 5
import { axios } from '../../utils'
5182 stevensc 6
import CapsulesList from './CapsulesList'
1 www 7
 
5182 stevensc 8
const MarketPlace = () => {
9
  const [capsules, setCapsules] = useState([])
5223 efrain 10
  const [rewards, setRewards] = useState([])
5182 stevensc 11
  const [categories, setCategories] = useState([])
5278 stevensc 12
  const [searchParams, setSearchParams] = useState({ search: '', category: 'capsules' })
5225 stevensc 13
  const dispatch = useDispatch()
2620 stevensc 14
 
5182 stevensc 15
  const handleChange = ({ target }) => setSearchParams({ ...searchParams, [target.name]: target.value })
1 www 16
 
5182 stevensc 17
  const load = async (_search = searchParams.search, _entity = searchParams.category) => {
18
    try {
5225 stevensc 19
      const { data: response } = await axios.get('/marketplace?search=' + _search + '&entity=' + _entity)
20
 
21
      if (!response.success) {
22
        dispatch(addNotification({ style: 'danger', msg: response.data }))
23
        return
5223 efrain 24
      }
5225 stevensc 25
 
26
      if (_entity === 'capsules') {
27
        setCapsules(response.data)
5223 efrain 28
      }
5225 stevensc 29
      if (_entity === 'rewards') {
30
        setRewards(response.data)
31
      }
5182 stevensc 32
    } catch (error) {
33
      console.log('>>: error > ', error)
3753 stevensc 34
    }
5182 stevensc 35
  }
3753 stevensc 36
 
5182 stevensc 37
  const getCategories = async () => {
38
    const categories = await axios.get('/marketplace/categories')
39
    if (categories.data.data) {
40
      const _categories = Object.keys(categories.data.data).map(element => {
41
        return {
42
          label: categories.data.data[element],
43
          value: element
1 www 44
        }
5182 stevensc 45
      })
46
      setCategories(_categories)
1 www 47
    }
5182 stevensc 48
  }
3753 stevensc 49
 
5182 stevensc 50
  const checkParams = () => {
51
    const url = window.location.href
52
    const hasEntity = url.includes('?entity=')
53
    if (hasEntity) {
54
      const value = url.split('?entity=')[1]
55
      if (value) { setSearchParams({ ...searchParams, category: value }) }
1 www 56
    }
5182 stevensc 57
  }
3753 stevensc 58
 
5182 stevensc 59
  useEffect(() => {
60
    getCategories()
61
    checkParams()
62
  }, [])
3753 stevensc 63
 
5182 stevensc 64
  useEffect(() => {
65
    load(searchParams.search, searchParams.category)
66
  }, [searchParams])
1 www 67
 
5182 stevensc 68
  return (
5299 stevensc 69
    <section className="container">
5225 stevensc 70
      <div className="market_admin_title_buttons">
5304 stevensc 71
      <div className="form-group search_categories">
5225 stevensc 72
          <select
73
            name="category"
74
            className="form-control"
75
            value={searchParams.category}
76
            onChange={e => handleChange(e)}
77
          >
5300 stevensc 78
            <option disabled value="">{LABELS.SELECT_CATEGORY}</option>
5225 stevensc 79
            {categories.map((element, i) =>
80
              <option value={element.value} key={i}>{element.label}</option>
81
            )}
82
          </select>
83
        </div>
5304 stevensc 84
        <div className="form-group search_input">
85
          <input
86
            type="text"
87
            name="search"
88
            className="form-control"
89
            onChange={e => handleChange(e)}
90
            value={searchParams.search}
91
          />
92
          <button className='search-btn'>{LABELS.SEARCH}</button>
93
        </div>
5225 stevensc 94
      </div>
5228 stevensc 95
      <CapsulesList
5231 stevensc 96
        category={searchParams.category}
5225 stevensc 97
        capsules={searchParams.category === 'capsules' ? capsules : rewards}
98
        onEnroll={load}
5228 stevensc 99
      />
5225 stevensc 100
    </section>
5182 stevensc 101
  )
3572 stevensc 102
}
103
 
5182 stevensc 104
export default MarketPlace