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>
);
}