Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 145 | Rev 653 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

import React, { useState, useEffect } from "react";
import { axios } from "../../utils";
import { Modal } from "react-bootstrap";
import { addNotification } from "../../redux/notification/notification.actions";

const AddMemberModal = ({
  isShow = false,
  linkInvite = "",
  handleClose = function () {},
}) => {
  const [users, setUsers] = useState([]);
  const [search, setSearch] = useState("");

  const handleChange = ({ target }) => setSearch(target.value);

  const searchMember = async (url, search) => {
    if (!url) return;

    try {
      const { data } = await axios.get(url + "?search=" + search);
      setUsers(data.data);
    } catch (error) {
      console.log(">>: error > ", error);
    }
  };

  const invite = (uuid) => {
    const formData = new FormData();
    formData.append("id", uuid);
    axios
      .post(linkInvite, formData)
      .then(({ data }) => {
        if (!data.success) {
          return addNotification({ msg: data.data, style: "danger" });
        }
        addNotification({ msg: data.data, style: "success" });
        handleClose();
      })
      .catch(() =>
        addNotification({
          msg: "Disculpe, ha ocurrido un error",
          style: "danger",
        })
      );
  };

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

  return (
    <Modal show={isShow} onHide={handleClose}>
      <Modal.Header closeButton>
        <h3>Escribe el nombre</h3>
      </Modal.Header>
      <Modal.Body>
        <div className="container">
          <div className="mb-2">
            <input
              onChange={handleChange}
              name="search"
              placeholder="Escribe el nombre del usuario"
            />
          </div>
          <ul className="d-flex flex-column w-100" style={{ gap: "1rem" }}>
            {users.map((element, index) => (
              <li key={index}>
                <div
                  className="d-flex align-items-center justify-content-between flex-column flex-md-row"
                  style={{ gap: ".5rem" }}
                >
                  <span>{element.text}</span>
                  <button
                    className="btn btn-primary"
                    onClick={() => invite(element.value)}
                  >
                    Invitar
                  </button>
                </div>
              </li>
            ))}
          </ul>
        </div>
      </Modal.Body>
    </Modal>
  );
};

export default AddMemberModal;