Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3544 | Rev 3546 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3538 stevensc 1
import React, { createContext, useCallback, useState } from 'react';
2
 
3
export const AlertModalContext = createContext({
4
  show: false,
5
  message: '',
6
  onConfirm: () => {},
7
  onCancel: () => {},
8
  showAlert: () => {},
9
  closeAlert: () => {}
10
});
11
 
3539 stevensc 12
export function AlertModalProvider({ children }) {
3538 stevensc 13
  const [show, setShow] = useState(false);
14
  const [message, setMessage] = useState('');
15
  const [onConfirm, setOnConfirm] = useState(() => {});
16
  const [onCancel, setOnCancel] = useState(() => {});
17
 
18
  const showAlert = useCallback(({ message = '', onConfirm = () => {}, onCancel = () => {} }) => {
3545 stevensc 19
    try {
20
      setMessage(message);
21
      setOnConfirm(() => onConfirm);
22
      setOnCancel(() => onCancel);
23
      setShow(true);
24
    } catch (error) {
25
      console.error('Error showing alert:', error);
26
      setShow(false);
27
    }
3538 stevensc 28
  }, []);
29
 
30
  const closeAlert = useCallback(() => {
31
    setMessage('');
32
    setShow(false);
3545 stevensc 33
    // Limpiar las funciones después de cerrar
34
    setOnConfirm(() => {});
35
    setOnCancel(() => {});
3538 stevensc 36
  }, []);
37
 
38
  return (
39
    <AlertModalContext.Provider
40
      value={{
41
        show,
42
        message,
43
        showAlert,
44
        closeAlert,
45
        onConfirm,
46
        onCancel: onCancel || closeAlert
47
      }}
48
    >
49
      {children}
50
    </AlertModalContext.Provider>
51
  );
52
}