Proyectos de Subversion LeadersLinked - SPA

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3434 stevensc 1
import React, { useEffect, useState } from 'react';
2
import { useNavigate } from 'react-router-dom';
3
import { useSelector } from 'react-redux';
1454 stevensc 4
import {
5
  Avatar,
6
  List,
7
  ListItem,
8
  ListItemAvatar,
9
  ListItemButton,
3432 stevensc 10
  ListItemText
3434 stevensc 11
} from '@mui/material';
5 stevensc 12
 
3434 stevensc 13
import { useDebounce } from '@hooks';
14
import { axios } from '../../utils';
1454 stevensc 15
 
3434 stevensc 16
import Input from '../UI/inputs/Input';
17
import Modal from '../UI/modal/Modal';
1453 stevensc 18
 
3434 stevensc 19
const StartConversationModal = ({ show, onClose }) => {
20
  const [users, setUsers] = useState([]);
21
  const [search, setSearch] = useState('');
22
  const debouncedSearch = useDebounce(search, 500);
23
  const navigate = useNavigate();
24
  const labels = useSelector(({ intl }) => intl.labels);
5 stevensc 25
 
26
  const searchUsers = async (value) => {
27
    try {
3434 stevensc 28
      const { data } = await axios.get('/helpers/search-people?search=' + value);
29
      if (data.success) setUsers(data.data);
5 stevensc 30
    } catch (error) {
3434 stevensc 31
      console.log('>>: error > ', error);
5 stevensc 32
    }
3434 stevensc 33
  };
5 stevensc 34
 
1454 stevensc 35
  const openChat = (uuid) => {
3434 stevensc 36
    navigate(`/inmail/${uuid}`);
37
    onClose();
38
  };
5 stevensc 39
 
40
  useEffect(() => {
3434 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
 
3432 stevensc 53
      <List sx={{ width: '100%' }}>
1454 stevensc 54
        {users.map((user) => {
3434 stevensc 55
          const { text, value } = user;
1454 stevensc 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>
3432 stevensc 61
                  <Avatar alt={`${text} image`} src='' />
1454 stevensc 62
                </ListItemAvatar>
63
 
64
                <ListItemText primary={text} />
65
              </ListItemButton>
66
            </ListItem>
3434 stevensc 67
          );
1453 stevensc 68
        })}
1454 stevensc 69
      </List>
5 stevensc 70
    </Modal>
3434 stevensc 71
  );
72
};
5 stevensc 73
 
3434 stevensc 74
export default StartConversationModal;