Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 15833 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
15824 stevensc 1
import React, { useEffect, useState } from "react";
2
import { axios } from "../../../utils";
3
 
15801 stevensc 4
import Sidebar from "./Sidebar";
5
import Chat from "../chat/Chat";
15824 stevensc 6
import Modal from "react-bootstrap/Modal";
7
import EmptySection from "../../../shared/empty-section/EmptySection";
11347 nelberth 8
 
16291 stevensc 9
const DesktopChat = ({ chatUsers, chatGroups, timezones }) => {
15824 stevensc 10
  const [selectedConversation, setSelectedConversation] = useState(null);
11
  const [visible, setVisible] = useState(false);
12
 
15829 stevensc 13
  const handleChangeConversation = (conversation) => {
14
    setSelectedConversation(conversation);
15801 stevensc 15
  };
11347 nelberth 16
 
15824 stevensc 17
  const onClose = () => {
18
    setVisible(false);
15801 stevensc 19
  };
11347 nelberth 20
 
15824 stevensc 21
  const handleCloseChat = () => {
22
    console.log(">>: close chat");
15801 stevensc 23
  };
15824 stevensc 24
 
25
  return (
26
    <>
15833 stevensc 27
      <main className="conversation-page px-0 pt-3">
15824 stevensc 28
        <Sidebar
29
          onClick={(conversation) => handleChangeConversation(conversation)}
30
          conversations={[...chatUsers, ...chatGroups]}
31
          selectedConversation={selectedConversation}
32
        />
33
        {!selectedConversation ? (
15828 stevensc 34
          <EmptySection message="Selecciona una conversación" align="center" />
15824 stevensc 35
        ) : (
16291 stevensc 36
          <Chat
37
            entity={selectedConversation}
38
            onCloseChat={handleCloseChat}
39
            timezones={timezones}
40
          />
15824 stevensc 41
        )}
42
      </main>
43
      <DesktopChat.ChatModal show={visible} onClose={onClose} />
44
    </>
45
  );
46
};
47
 
48
const ChatModal = ({ show, onClose }) => {
49
  const [inmailPersons, setInmailPersons] = useState([]);
50
  const [search, setSearch] = useState("");
51
 
52
  const handleChange = (searchValue) => {
53
    setSearch(searchValue);
15801 stevensc 54
  };
11347 nelberth 55
 
15824 stevensc 56
  const searchUsers = async () => {
15801 stevensc 57
    try {
15824 stevensc 58
      const { data: response } = await axios.get(
59
        `/helpers/search-people?search=${search}`
60
      );
61
      const { success, data } = response;
62
 
63
      if (!success) {
64
        console.log("Ha ocurrido un error");
15801 stevensc 65
      }
15824 stevensc 66
 
67
      setInmailPersons(data);
15801 stevensc 68
    } catch (error) {
69
      console.log(">>: error > ", error);
11347 nelberth 70
    }
15801 stevensc 71
  };
11347 nelberth 72
 
15801 stevensc 73
  const handleInmailPerson = (uuid) => {
74
    onClose();
75
    window.location.href = "/inmail/" + uuid;
76
    setTimeout(() => {
77
      window.location.reload();
78
    }, 1000);
79
  };
11347 nelberth 80
 
15824 stevensc 81
  useEffect(() => {
82
    searchUsers();
83
  }, [search]);
11347 nelberth 84
 
15801 stevensc 85
  return (
15824 stevensc 86
    <Modal show={show} onHide={onClose}>
87
      <Modal.Header closeButton>
88
        <Modal.Title>Crear sala de Chat</Modal.Title>
89
      </Modal.Header>
90
      <Modal.Body>
91
        <div class="form-group">
92
          <label for="search-people">Direccion de email</label>
93
          <input
94
            type="email"
95
            className="form-control"
96
            aria-describedby="Buscador de personas"
97
            placeholder="Escribe el nombre de la persona"
98
            onChange={handleChange}
99
          />
15801 stevensc 100
        </div>
15824 stevensc 101
        <div className="container">
102
          {inmailPersons.map((element) => {
103
            return (
104
              <div className="row" key={element.value}>
105
                <div className="col-8">
106
                  <p> {element.text} </p>
107
                </div>
108
                <div className="col-4">
109
                  <button
110
                    className="btn btn-primary"
111
                    onClick={() => handleInmailPerson(element.value)}
112
                  >
113
                    <i className="fa fa-check" />
114
                  </button>
115
                </div>
15801 stevensc 116
              </div>
15824 stevensc 117
            );
118
          })}
15801 stevensc 119
        </div>
15824 stevensc 120
      </Modal.Body>
121
      <Modal.Footer>
122
        <button onClick={onClose} className="btn btn-secondary">
123
          Cerrar
124
        </button>
125
      </Modal.Footer>
126
    </Modal>
15801 stevensc 127
  );
128
};
15824 stevensc 129
 
130
DesktopChat.ChatModal = ChatModal;
131
 
132
export default DesktopChat;