Proyectos de Subversion LeadersLinked - SPA

Rev

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