Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3658 | 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 [title, setTitle] = useState('');
  const [message, setMessage] = useState('');
  const [onConfirm, setOnConfirm] = useState(() => {});
  const [onCancel, setOnCancel] = useState(() => {});

  const showAlert = useCallback(({ title = '', message = '', onConfirm = () => {}, onCancel }) => {
    try {
      setTitle(title);
      setMessage(message);
      setOnConfirm(() => onConfirm);
      setOnCancel(() => (onCancel ? onCancel : closeAlert));
      setShow(true);
    } catch (error) {
      console.error('Error showing alert:', error);
      setShow(false);
    }
  }, []);

  const closeAlert = useCallback(() => {
    setMessage('');
    setShow(false);
    // Limpiar las funciones después de cerrar
    setOnConfirm(() => {});
    setOnCancel(() => {});
  }, []);

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