Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3682 | Rev 3687 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3682 stevensc 1
import React from 'react';
2
import { useNavigate } from 'react-router-dom';
3
 
4
import { useAlert, useAlertModal, useApi, useModal } from '@shared/hooks';
5
import { debounce } from '@shared/utils';
6
import { getMyGroups } from '@groups/services';
7
 
8
import { AddGroupForm } from '@groups/components';
9
 
10
export const useMyGroups = () => {
11
  const navigate = useNavigate();
12
 
13
  const { showModal, closeModal } = useModal();
14
  const { showAlert, closeAlert } = useAlertModal();
15
  const { showError, showSuccess } = useAlert();
16
 
17
  const {
18
    data: groups,
19
    loading,
20
    execute
21
  } = useApi(getMyGroups, {
22
    autoFetch: true
23
  });
24
 
25
  const { execute: executeDeleteGroup } = useApi(deleteGroup);
26
 
27
  const addGroup = () => {
28
    showModal('Agregar grupo', <AddGroupForm onSubmit={closeModal} />);
29
  };
30
 
31
  const editGroup = (url) => {
32
    navigate(url);
33
  };
34
 
35
  const deleteGroup = (url) => {
36
    showAlert({
37
      title: '¿Estás seguro de querer eliminar este grupo?',
38
      onConfirm: () => {
39
        executeDeleteGroup(url)
40
          .then((message) => {
41
            showSuccess(message);
42
            closeAlert();
43
            execute();
44
          })
45
          .catch((error) => {
46
            showError(error.message);
47
          });
48
      },
49
      onCancel: closeAlert
50
    });
51
  };
52
 
53
  const viewGroup = (url) => {
54
    navigate(url);
55
  };
56
 
3685 stevensc 57
  const searchGroups = debounce((value) => {
58
    execute({ search: value });
3682 stevensc 59
  }, 500);
60
 
61
  return { groups, loading, addGroup, editGroup, deleteGroup, viewGroup, searchGroups };
62
};