Rev 5175 | Rev 5996 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
/* eslint-disable react/prop-types */
/* eslint-disable camelcase */
import React, { useEffect, useState } from 'react'
import { connect } from 'react-redux'
import { debounce } from '../../../../utils'
import { searchEntities } from '../../../../services/search'
import { addNotification } from '../../../../redux/notification/notification.actions'
import Spinner from '../../../../shared/loading-spinner/Spinner'
import Profile from '../../../../components/Profile'
import SearchList from '../../../../components/SearchList'
import TitleSection from '../../../../components/TitleSection'
import EmptySection from '../../../../shared/empty-section/EmptySection'
import AddGroupModal from './add-group-modal/AddGroupModal'
const MyGroups = ({ groupTypes, industries, addNotification, LABELS }) => {
const [groups, setGroups] = useState([])
const [loading, setLoading] = useState(true)
const [showAddGroupModal, setShowAddGroupModal] = useState(false)
useEffect(() => {
getGroups()
}, [])
const getGroups = async (searchValue = '') => {
setLoading(true)
const response = await searchEntities('group/my-groups', searchValue)
if (!response.success) {
addNotification({ style: 'danger', msg: response.data })
setLoading(false)
return
}
setGroups(response.data)
setLoading(false)
}
const handleShowAddGroupModal = () => {
setShowAddGroupModal(!showAddGroupModal)
}
const handleSearch = debounce((value) => getGroups(value), 500)
return (
<section className="companies-info container">
<TitleSection title={LABELS.MY_GROUPS} allowAdd onAdd={handleShowAddGroupModal} />
<SearchList onChange={handleSearch} />
<div className="companies-list">
{loading && <Spinner />}
{(!loading && Boolean(!groups.length)) && <EmptySection align='left' message={LABELS.DATATABLE_SZERORECORDS} />}
{(!loading && Boolean(groups.length)) &&
groups.map(
({ image, link_delete, link_edit, link_view, name, privacy }, id) =>
<Profile
image={image}
name={name}
status={privacy}
link_view={link_view}
link_edit={link_edit}
link_delete={link_delete}
key={id}
fetchCallback={getGroups}
btnAcceptTitle={LABELS.GROUP_VIEW}
btnEditTitle={`${LABELS.EDIT} ${LABELS.GROUP.toLowerCase()}`}
btnCancelTitle={`${LABELS.DELETE} ${LABELS.GROUP.toLowerCase()}`}
/>
)}
</div>
<AddGroupModal
show={showAddGroupModal}
onHide={handleShowAddGroupModal}
getGroups={getGroups}
groupTypes={groupTypes}
industries={industries}
/>
</section>
)
}
const mapDispatchToProps = {
addNotification: (notification) => addNotification(notification)
}
export default connect(null, mapDispatchToProps)(MyGroups)