Skip to content
Snippets Groups Projects
getBasePublications.ts 1.08 KiB
Newer Older
import { publicationsResponseSchema } from '@/models/publicationsResponseSchema';
import { apiPath } from '@/redux/apiPath';
import { PUBLICATIONS_FETCHING_ERROR_PREFIX } from '@/redux/publications/publications.constatns';
import { axiosInstance } from '@/services/api/utils/axiosInstance';
import { Publication, PublicationsResponse } from '@/types/models';
import { validateDataUsingZodSchema } from '@/utils/validateDataUsingZodSchema';
import { getError } from '@/utils/error-report/getError';
import { handleError } from '@/utils/error-report/errorReporting';

interface Args {
  length: number;
}

export const getBasePublications = async ({ length }: Args): Promise<Publication[]> => {
  try {
    const response = await axiosInstance.get<PublicationsResponse>(
      apiPath.getPublications({ params: { length } }),
    );

    const isDataValid = validateDataUsingZodSchema(response.data, publicationsResponseSchema);

    return isDataValid ? response.data.data : [];
  } catch (error) {
    handleError(getError({ error, prefix: PUBLICATIONS_FETCHING_ERROR_PREFIX }));