Proyectos de Subversion LeadersLinked - SPA

Rev

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

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