Rev 1456 | Rev 2076 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useState } from 'react'import { useDispatch } from 'react-redux'import {Avatar,List,ListItem,ListItemAvatar,ListItemButton,ListItemText} from '@mui/material'import { axios, debounce } from 'utils/index'import { addNotification } from '../../redux/notification/notification.actions'import Modal from 'components/UI/modal/Modal'import TextInput from 'components/UI/inputs/TextInput'const ContactsModal = ({ show, onClose, onComplete }) => {const [contacts, setContacts] = useState([])const dispatch = useDispatch()const closeModal = () => {setContacts([])onClose()}const handleSearch = debounce((value) => getContacts(value), 500)const getContacts = (searchValue = '') => {axios.get(`/chat/users?search=${searchValue.toLowerCase()}`).then(({ data: response }) => {if (!response.success) {return dispatch(addNotification({ style: 'danger', msg: 'Ha ocurrido un error' }))}setContacts(response.data)})}const startConversation = ({ link_open_or_create, link_send }) => {axios.post(link_open_or_create).then(({ data: response }) => {if (response.success) {closeModal()onComplete(link_send)}})}return (<Modalshow={show}title='Iniciar conversación'onClose={closeModal}showFooter={false}><TextInputlabel='Escribe el nombre'name='search-contact'type='text'placeholder='Escribe el nombre de la persona'onChange={(e) => handleSearch(e.target.value)}/><List sx={{ width: '100%' }}>{contacts.map((user) => {const { image, name } = userreturn (<ListItem key={name} disablePadding disableRipple><ListItemButtondisableRippleonClick={() => startConversation(user)}><ListItemAvatar><Avatar alt={`${name} image`} src={image} /></ListItemAvatar><ListItemText primary={name} /></ListItemButton></ListItem>)})}</List></Modal>)}export default ContactsModal