Proyectos de Subversion LeadersLinked - Backend

Rev

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

import React from "react";
import axios from "axios";
import { Modal } from "react-bootstrap";
import { useDispatch } from "react-redux";
import { addNotification } from "../redux/notification/notification.actions";

const DeleteModal = ({
  isOpen = false,
  closeModal = function () {},
  title = "Estas seguro?",
  action,
  onComplete,
  url,
  message,
}) => {
  const dispatch = useDispatch();

  const onSubmit = () => {
    if (!url && action) {
      dispatch(action());
      closeModal();
      return;
    }

    if (!url && onComplete) {
      onComplete();
      closeModal();
      return;
    }

    axios
      .post(url)
      .then(({ data }) => {
        if (!data.success) {
          typeof data.data === "string"
            ? dispatch(addNotification({ style: "danger", msg: data.data }))
            : Object.entries(data.data).map(([key, value]) =>
                value.map((err) =>
                  dispatch(
                    addNotification({ style: "danger", msg: `${key}: ${err}` })
                  )
                )
              );
          return;
        }

        action && dispatch(action());
        onComplete && onComplete();

        closeModal();

        dispatch(
          addNotification({
            style: "success",
            msg: message ? message : "Se ha eliminado con exito",
          })
        );
      })
      .catch(() =>
        dispatch(
          addNotification({
            style: "danger",
            msg: "Ha ocurrido un error",
          })
        )
      );
  };

  return (
    <Modal size="sm" show={isOpen} onHide={closeModal} autoFocus={false}>
      <Modal.Body>
        <h3>{title}</h3>
      </Modal.Body>
      <Modal.Footer>
        <button className="btn btn-primary" onClick={onSubmit}>
          Aceptar
        </button>
        <button className="btn btn-secondary" onClick={closeModal}>
          Cancelar
        </button>
      </Modal.Footer>
    </Modal>
  );
};

export default DeleteModal;