Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3685 | Rev 3688 | 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
 
3687 stevensc 25
  const { execute: executeDeleteGroup } = useApi(deleteGroup, {
26
    onSuccess: () => {
27
      showSuccess('Grupo eliminado correctamente');
28
      closeAlert();
29
      execute();
30
    },
31
    onError: (error) => {
32
      showError(error.message);
33
    }
34
  });
3682 stevensc 35
 
36
  const addGroup = () => {
3687 stevensc 37
    showModal(
38
      'Agregar grupo',
39
      <AddGroupForm
40
        onSubmit={() => {
41
          closeModal();
42
          execute();
43
        }}
44
      />
45
    );
3682 stevensc 46
  };
47
 
48
  const editGroup = (url) => {
49
    navigate(url);
50
  };
51
 
52
  const deleteGroup = (url) => {
53
    showAlert({
54
      title: '¿Estás seguro de querer eliminar este grupo?',
3687 stevensc 55
      onConfirm: () => executeDeleteGroup(url),
3682 stevensc 56
      onCancel: closeAlert
57
    });
58
  };
59
 
60
  const viewGroup = (url) => {
61
    navigate(url);
62
  };
63
 
3685 stevensc 64
  const searchGroups = debounce((value) => {
65
    execute({ search: value });
3682 stevensc 66
  }, 500);
67
 
68
  return { groups, loading, addGroup, editGroup, deleteGroup, viewGroup, searchGroups };
69
};