Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3685 | Ir a la última revisión | | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3682 stevensc 1
import { useNavigate } from 'react-router-dom';
2
 
3
import { useAlert, useAlertModal, useApi } from '@shared/hooks';
4
import { debounce } from '@shared/utils';
5
import { getJoinedGroups, leaveGroup as leaveGroupService } from '@groups/services';
6
 
7
export const useJoinedGroups = () => {
8
  const navigate = useNavigate();
9
 
10
  const { showAlert, closeAlert } = useAlertModal();
11
  const { showError, showSuccess } = useAlert();
12
 
13
  const {
14
    data: groups,
15
    loading,
16
    execute
17
  } = useApi(getJoinedGroups, {
18
    autoFetch: true
19
  });
20
 
21
  const { execute: executeLeaveGroup } = useApi(leaveGroupService);
22
 
23
  const leaveGroup = (url) => {
24
    showAlert({
25
      title: '¿Estás seguro de querer salir de este grupo?',
26
      onConfirm: () => {
27
        executeLeaveGroup(url)
28
          .then((message) => {
29
            showSuccess(message);
30
            closeAlert();
31
            execute();
32
          })
33
          .catch((error) => {
34
            showError(error.message);
35
          });
36
      },
37
      onCancel: closeAlert
38
    });
39
  };
40
 
41
  const viewGroup = (url) => {
42
    navigate(url);
43
  };
44
 
45
  const searchGroups = debounce((e) => {
46
    execute({ search: e.target.value });
47
  }, 500);
48
 
49
  return { groups, loading, leaveGroup, viewGroup, searchGroups };
50
};