import { AxiosResponse } from 'axios';
import { isCancel } from 'src/boot/axios';
import { notifyError } from 'src/helpers';

export const run = <T = any>(asyncFn: Promise<AxiosResponse<T>>, successMessage?: string | null, errorMessage?: string | null) =>
  asyncFn
    .then(({ data }) => {
      return data;
    })
    .catch((err: any) => {
      if (isCancel(err)) {
        return {};
      }
      console.log(err);
      notifyError(err, errorMessage || 'Ocurrió un error inesperado. Por favor, intenta de nuevo.');
      throw new Error(err);
    });
