Proyectos de Subversion LeadersLinked - SPA

Rev

Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

import { useNavigate } from 'react-router-dom';

import { useAlert, useAlertModal, useApi } from '@shared/hooks';
import { debounce } from '@shared/utils';
import {
  getRequestsReceived,
  acceptRequest as acceptRequestService,
  rejectRequest as rejectRequestService
} from '@groups/services';

export const useGroupsRequestReceived = () => {
  const navigate = useNavigate();

  const { showAlert, closeAlert } = useAlertModal();
  const { showError, showSuccess } = useAlert();

  const {
    data: groups,
    loading,
    execute
  } = useApi(getRequestsReceived, {
    autoFetch: true
  });

  const { execute: acceptRequest } = useApi(acceptRequestService, {
    onSuccess: (message) => {
      showSuccess(message);
      closeAlert();
      execute();
    },
    onError: (error) => {
      showError(error.message);
    }
  });

  const { execute: executeRejectRequest } = useApi(rejectRequestService, {
    onSuccess: (message) => {
      showSuccess(message);
      closeAlert();
      execute();
    },
    onError: (error) => {
      showError(error.message);
    }
  });

  const rejectRequest = (url) => {
    showAlert({
      title: '¿Estás seguro de querer rechazar la invitación?',
      onConfirm: () => executeRejectRequest(url),
      onCancel: closeAlert
    });
  };

  const viewGroup = (url) => {
    navigate(url);
  };

  const searchGroups = debounce((value) => {
    execute({ search: value });
  }, 500);

  return { groups, loading, acceptRequest, rejectRequest, viewGroup, searchGroups };
};