Proyectos de Subversion LeadersLinked - SPA

Rev

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

import React, { createContext, useCallback, useState } from 'react';

export const AlertModalContext = createContext({
  show: false,
  message: '',
  onConfirm: () => {},
  onCancel: () => {},
  showAlert: () => {},
  closeAlert: () => {}
});

export function AlertModalProvider({ children }) {
  const [show, setShow] = useState(false);
  const [message, setMessage] = useState('');
  const [onConfirm, setOnConfirm] = useState(() => {});
  const [onCancel, setOnCancel] = useState(() => {});

  const showAlert = useCallback(({ message = '', onConfirm = () => {}, onCancel = () => {} }) => {
    setMessage(message);
    setOnConfirm(() => {
      onConfirm();
    });
    setOnCancel(() => {
      onCancel();
    });
    setShow(true);
  }, []);

  const closeAlert = useCallback(() => {
    setMessage('');
    setShow(false);
  }, []);

  return (
    <AlertModalContext.Provider
      value={{
        show,
        message,
        showAlert,
        closeAlert,
        onConfirm,
        onCancel: onCancel || closeAlert
      }}
    >
      {children}
    </AlertModalContext.Provider>
  );
}