Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3610 | 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);
3610 stevensc 14
  const [title, setTitle] = useState('');
3538 stevensc 15
  const [message, setMessage] = useState('');
16
  const [onConfirm, setOnConfirm] = useState(() => {});
17
  const [onCancel, setOnCancel] = useState(() => {});
18
 
3610 stevensc 19
  const showAlert = useCallback(({ title = '', message = '', onConfirm = () => {}, onCancel }) => {
3545 stevensc 20
    try {
3610 stevensc 21
      setTitle(title);
3545 stevensc 22
      setMessage(message);
23
      setOnConfirm(() => onConfirm);
3546 stevensc 24
      setOnCancel(() => (onCancel ? onCancel : closeAlert));
3545 stevensc 25
      setShow(true);
26
    } catch (error) {
27
      console.error('Error showing alert:', error);
28
      setShow(false);
29
    }
3538 stevensc 30
  }, []);
31
 
32
  const closeAlert = useCallback(() => {
33
    setMessage('');
34
    setShow(false);
3545 stevensc 35
    // Limpiar las funciones después de cerrar
36
    setOnConfirm(() => {});
37
    setOnCancel(() => {});
3538 stevensc 38
  }, []);
39
 
40
  return (
41
    <AlertModalContext.Provider
42
      value={{
43
        show,
3610 stevensc 44
        title,
3538 stevensc 45
        message,
46
        showAlert,
47
        closeAlert,
48
        onConfirm,
3546 stevensc 49
        onCancel
3538 stevensc 50
      }}
51
    >
52
      {children}
53
    </AlertModalContext.Provider>
54
  );
55
}