Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3658 | | Comparar con el anterior | Ultima modificación | Ver Log |

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