Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3658 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

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