Proyectos de Subversion LeadersLinked - SPA

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
46 stevensc 1
import React, { useEffect, useState } from "react";
2
import { axios } from "../../utils";
3
import { Modal } from "react-bootstrap";
4
import { useSelector } from "react-redux";
5
import CheckIcon from "@mui/icons-material/Check";
5 stevensc 6
 
7
const StartConversationModal = ({ show, setConversation, onClose }) => {
46 stevensc 8
  const [inmailPersons, setInmailPersons] = useState([]);
5 stevensc 9
 
46 stevensc 10
  const [search, setSearch] = useState("");
11
  const labels = useSelector(({ intl }) => intl.labels);
5 stevensc 12
 
13
  const handleSearch = ({ target }) => {
46 stevensc 14
    setSearch(target.value);
15
  };
5 stevensc 16
 
17
  const searchUsers = async (value) => {
18
    try {
46 stevensc 19
      const { data } = await axios.get(
20
        "/helpers/search-people?search=" + value
21
      );
22
      if (data.success) setInmailPersons(data.data);
5 stevensc 23
    } catch (error) {
46 stevensc 24
      console.log(">>: error > ", error);
5 stevensc 25
    }
46 stevensc 26
  };
5 stevensc 27
 
28
  const handleInmailPerson = (uuid) => {
29
    axios.get(`/inmail/${uuid}`).then(({ data }) => {
30
      if (data.success) {
31
        const newConversation = data.data.find(
32
          (conversation) => conversation.uuid === uuid
46 stevensc 33
        );
34
        setConversation(newConversation);
5 stevensc 35
      }
46 stevensc 36
    });
5 stevensc 37
 
46 stevensc 38
    onClose();
39
  };
5 stevensc 40
 
41
  useEffect(() => {
46 stevensc 42
    searchUsers(search);
43
  }, [search]);
5 stevensc 44
 
45
  return (
46
    <Modal show={show} onHide={onClose}>
47
      <Modal.Header closeButton>
48
        <Modal.Title>{labels.create_inmail}</Modal.Title>
49
      </Modal.Header>
50
      <Modal.Body>
51
        <div className="form-group">
52
          <label htmlFor="search-people">{labels.write_name}</label>
53
          <input
54
            type="email"
55
            className="form-control"
56
            aria-describedby="Buscador de personas"
57
            placeholder={labels.write_person_name}
58
            onChange={handleSearch}
59
          />
60
        </div>
61
        <div className="container">
62
          {inmailPersons.map((person) => {
63
            return (
64
              <div className="row" key={person.value}>
65
                <div className="col-8">
66
                  <p>{person.text}</p>
67
                </div>
68
                <div className="col-4">
69
                  <button
70
                    className="btn btn-primary"
71
                    onClick={() => handleInmailPerson(person.value)}
72
                  >
46 stevensc 73
                    <CheckIcon />
5 stevensc 74
                  </button>
75
                </div>
76
              </div>
46 stevensc 77
            );
5 stevensc 78
          })}
79
        </div>
80
      </Modal.Body>
81
    </Modal>
46 stevensc 82
  );
83
};
5 stevensc 84
 
46 stevensc 85
export default StartConversationModal;