Rev 2122 | Rev 3434 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useEffect, useState } from 'react'import { connect } from 'react-redux'import {Avatar,List,ListItem,ListItemAvatar,ListItemButton,ListItemText} from '@mui/material'import { useDebounce } from '@hooks'import { getCurrentContacts, startConversation } from '@app/services/chats'import { addNotification } from '@app/redux/notification/notification.actions'import Modal from '../UI/modal/Modal'import Input from '../UI/inputs/input'const ContactsModal = ({ show, onClose, onComplete, addNotification }) => {const [search, setSearch] = useState('')const debounceSearch = useDebounce(search, 500)const [contacts, setContacts] = useState([])const closeModal = () => {setContacts([])onClose()}const handleStartConversation = async (startConversationUrl) => {try {const conversation = await startConversation(startConversationUrl)onComplete(conversation)closeModal()} catch (error) {addNotification({ style: 'danger', msg: error.message })}}useEffect(() => {getCurrentContacts(debounceSearch).then((currentContacts) => setContacts(currentContacts)).catch((error) => {addNotification({ style: 'danger', msg: error.message })})}, [debounceSearch])return (<Modalshow={show}title='Iniciar conversación'onClose={closeModal}showFooter={false}><Inputlabel='Escribe el nombre'placeholder='Escribe el nombre de la persona'onChange={(e) => setSearch(e.target.value)}/><List sx={{ width: '100%' }}>{contacts.map((user) => {const { image, name, link_open_or_create } = userreturn (<ListItem key={name} disablePadding disableRipple><ListItemButtondisableRippleonClick={() => handleStartConversation(link_open_or_create)}><ListItemAvatar><Avatar alt={`${name} image`} src={image} /></ListItemAvatar><ListItemText primary={name} /></ListItemButton></ListItem>)})}</List></Modal>)}const mapDispatchToProps = {addNotification: (notification) => addNotification(notification)}export default connect(null, mapDispatchToProps)(ContactsModal)