Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
3719 stevensc 1
import { useEffect, useState } from 'react';
2
import { useDispatch } from 'react-redux';
3
 
4
import { addNotification } from '@store/notification/notification.actions';
5
 
6
export function useResource({ defaultResources = [], addResource, editResource, deleteResource }) {
7
  const [resources, setResources] = useState(defaultResources);
8
  const [modalState, setModalState] = useState(null);
9
  const [currentResource, setCurrentResource] = useState(null);
10
  const dispatch = useDispatch();
11
 
12
  const showModal = (type, resource = null) => {
13
    setCurrentResource(resource);
14
    setModalState(modalState === type ? null : type);
15
  };
16
 
17
  const clearModal = () => {
18
    showModal(null);
19
    setCurrentResource(null);
20
  };
21
 
22
  const onAdd = async (uuid, resource) => {
23
    try {
24
      const newResources = await addResource(uuid, resource);
25
      setResources(newResources);
26
      clearModal();
27
    } catch (error) {
28
      dispatch(addNotification({ style: 'danger', msg: error.message }));
29
    }
30
  };
31
 
32
  const onEdit = async (resource) => {
33
    try {
34
      console.log('Editing');
35
      const newResources = await editResource(currentResource.link_edit, resource);
36
      console.log(newResources);
37
      setResources(newResources);
38
      clearModal();
39
    } catch (error) {
40
      dispatch(addNotification({ style: 'danger', msg: error.message }));
41
    }
42
  };
43
 
44
  const onDelete = async () => {
45
    try {
46
      const newResources = await deleteResource(currentResource.link_delete);
47
      setResources(newResources);
48
      clearModal();
49
    } catch (error) {
50
      dispatch(addNotification({ style: 'danger', msg: error.message }));
51
    }
52
  };
53
 
54
  useEffect(() => {
55
    setResources(defaultResources);
56
  }, [defaultResources]);
57
 
58
  return {
59
    showModal,
60
    modalState,
61
    onAdd,
62
    onEdit,
63
    onDelete,
64
    clearModal,
65
    resources,
66
    currentResource
67
  };
68
}