Proyectos de Subversion LeadersLinked - Backend

Rev

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

import React, { useEffect, useState } from "react";
import { axios } from "../../../utils";

import Sidebar from "./Sidebar";
import Chat from "../chat/Chat";
import Modal from "react-bootstrap/Modal";
import EmptySection from "../../../shared/empty-section/EmptySection";

const DesktopChat = ({ chatUsers, chatGroups, timezones }) => {
  const [selectedConversation, setSelectedConversation] = useState(null);
  const [visible, setVisible] = useState(false);

  const handleChangeConversation = (conversation) => {
    setSelectedConversation(conversation);
  };

  const onClose = () => {
    setVisible(false);
  };

  const handleCloseChat = () => {
    console.log(">>: close chat");
  };

  return (
    <>
      <main className="conversation-page px-0 pt-3">
        <Sidebar
          onClick={(conversation) => handleChangeConversation(conversation)}
          conversations={[...chatUsers, ...chatGroups]}
          selectedConversation={selectedConversation}
        />
        {!selectedConversation ? (
          <EmptySection message="Selecciona una conversación" align="center" />
        ) : (
          <Chat
            entity={selectedConversation}
            onCloseChat={handleCloseChat}
            timezones={timezones}
          />
        )}
      </main>
      <DesktopChat.ChatModal show={visible} onClose={onClose} />
    </>
  );
};

const ChatModal = ({ show, onClose }) => {
  const [inmailPersons, setInmailPersons] = useState([]);
  const [search, setSearch] = useState("");

  const handleChange = (searchValue) => {
    setSearch(searchValue);
  };

  const searchUsers = async () => {
    try {
      const { data: response } = await axios.get(
        `/helpers/search-people?search=${search}`
      );
      const { success, data } = response;

      if (!success) {
        console.log("Ha ocurrido un error");
      }

      setInmailPersons(data);
    } catch (error) {
      console.log(">>: error > ", error);
    }
  };

  const handleInmailPerson = (uuid) => {
    onClose();
    window.location.href = "/inmail/" + uuid;
    setTimeout(() => {
      window.location.reload();
    }, 1000);
  };

  useEffect(() => {
    searchUsers();
  }, [search]);

  return (
    <Modal show={show} onHide={onClose}>
      <Modal.Header closeButton>
        <Modal.Title>Crear sala de Chat</Modal.Title>
      </Modal.Header>
      <Modal.Body>
        <div class="form-group">
          <label for="search-people">Direccion de email</label>
          <input
            type="email"
            className="form-control"
            aria-describedby="Buscador de personas"
            placeholder="Escribe el nombre de la persona"
            onChange={handleChange}
          />
        </div>
        <div className="container">
          {inmailPersons.map((element) => {
            return (
              <div className="row" key={element.value}>
                <div className="col-8">
                  <p> {element.text} </p>
                </div>
                <div className="col-4">
                  <button
                    className="btn btn-primary"
                    onClick={() => handleInmailPerson(element.value)}
                  >
                    <i className="fa fa-check" />
                  </button>
                </div>
              </div>
            );
          })}
        </div>
      </Modal.Body>
      <Modal.Footer>
        <button onClick={onClose} className="btn btn-secondary">
          Cerrar
        </button>
      </Modal.Footer>
    </Modal>
  );
};

DesktopChat.ChatModal = ChatModal;

export default DesktopChat;