Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
3689 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 {
6
  getRequestsReceived,
7
  acceptRequest as acceptRequestService,
8
  rejectRequest as rejectRequestService
9
} from '@groups/services';
10
 
11
export const useGroupsRequestReceived = () => {
12
  const navigate = useNavigate();
13
 
14
  const { showAlert, closeAlert } = useAlertModal();
15
  const { showError, showSuccess } = useAlert();
16
 
17
  const {
18
    data: groups,
19
    loading,
20
    execute
21
  } = useApi(getRequestsReceived, {
22
    autoFetch: true
23
  });
24
 
25
  const { execute: acceptRequest } = useApi(acceptRequestService, {
26
    onSuccess: (message) => {
27
      showSuccess(message);
28
      closeAlert();
29
      execute();
30
    },
31
    onError: (error) => {
32
      showError(error.message);
33
    }
34
  });
35
 
36
  const { execute: executeRejectRequest } = useApi(rejectRequestService, {
37
    onSuccess: (message) => {
38
      showSuccess(message);
39
      closeAlert();
40
      execute();
41
    },
42
    onError: (error) => {
43
      showError(error.message);
44
    }
45
  });
46
 
47
  const rejectRequest = (url) => {
48
    showAlert({
49
      title: '¿Estás seguro de querer rechazar la invitación?',
50
      onConfirm: () => executeRejectRequest(url),
51
      onCancel: closeAlert
52
    });
53
  };
54
 
55
  const viewGroup = (url) => {
56
    navigate(url);
57
  };
58
 
59
  const searchGroups = debounce((value) => {
60
    execute({ search: value });
61
  }, 500);
62
 
63
  return { groups, loading, acceptRequest, rejectRequest, viewGroup, searchGroups };
64
};