Proyectos de Subversion LeadersLinked - SPA

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1453 stevensc 1
import React, { useEffect, useState } from 'react'
2614 stevensc 2
import { useNavigate } from 'react-router-dom'
1453 stevensc 3
import { useSelector } from 'react-redux'
1454 stevensc 4
import {
5
  Avatar,
6
  List,
7
  ListItem,
8
  ListItemAvatar,
9
  ListItemButton,
10
  ListItemText
11
} from '@mui/material'
5 stevensc 12
 
2780 stevensc 13
import { useDebounce } from '@hooks'
1453 stevensc 14
import { axios } from '../../utils'
1454 stevensc 15
 
2073 stevensc 16
import Input from '../UI/inputs/input'
17
import Modal from '../UI/modal/Modal'
1453 stevensc 18
 
5 stevensc 19
const StartConversationModal = ({ show, setConversation, onClose }) => {
1454 stevensc 20
  const [users, setUsers] = useState([])
1453 stevensc 21
  const [search, setSearch] = useState('')
2075 stevensc 22
  const debouncedSearch = useDebounce(search, 500)
2614 stevensc 23
  const navigate = useNavigate()
1453 stevensc 24
  const labels = useSelector(({ intl }) => intl.labels)
5 stevensc 25
 
26
  const searchUsers = async (value) => {
27
    try {
1453 stevensc 28
      const { data } = await axios.get('/helpers/search-people?search=' + value)
1454 stevensc 29
      if (data.success) setUsers(data.data)
5 stevensc 30
    } catch (error) {
1453 stevensc 31
      console.log('>>: error > ', error)
5 stevensc 32
    }
1453 stevensc 33
  }
5 stevensc 34
 
1454 stevensc 35
  const openChat = (uuid) => {
2614 stevensc 36
    navigate(`/inmail/${uuid}`)
1453 stevensc 37
    onClose()
38
  }
5 stevensc 39
 
40
  useEffect(() => {
2075 stevensc 41
    searchUsers(debouncedSearch)
42
  }, [debouncedSearch])
5 stevensc 43
 
44
  return (
1453 stevensc 45
    <Modal title={labels.create_inmail} show={show} onClose={onClose}>
2073 stevensc 46
      <Input
1454 stevensc 47
        label={labels.write_name}
48
        placeholder={labels.write_person_name}
2074 stevensc 49
        onChange={(e) => setSearch(e.target.value)}
50
        value={search}
1454 stevensc 51
      />
1453 stevensc 52
 
1454 stevensc 53
      <List sx={{ width: '100%' }}>
54
        {users.map((user) => {
55
          const { text, value } = user
56
 
1453 stevensc 57
          return (
1454 stevensc 58
            <ListItem key={value} disablePadding disableRipple>
1614 stevensc 59
              <ListItemButton disableRipple onClick={() => openChat(value)}>
1454 stevensc 60
                <ListItemAvatar>
61
                  <Avatar alt={`${text} image`} src='' />
62
                </ListItemAvatar>
63
 
64
                <ListItemText primary={text} />
65
              </ListItemButton>
66
            </ListItem>
1453 stevensc 67
          )
68
        })}
1454 stevensc 69
      </List>
5 stevensc 70
    </Modal>
1453 stevensc 71
  )
72
}
5 stevensc 73
 
1453 stevensc 74
export default StartConversationModal