Files
mm.com.tm-frontend/src/app/api/collectionsApi.js
@jcarymuhammedow 6ef7aa3c47 fixed some bugs
2026-04-17 18:38:16 +05:00

61 lines
2.0 KiB
JavaScript

import { baseApi } from "./baseApi";
export const collectionsApi = baseApi.injectEndpoints({
endpoints: (builder) => ({
getCollections: builder.query({
query: () => `/collections`,
}),
getCollectionById: builder.query({
query: (collectionId) => `/collections/${collectionId}`,
}),
getCollectionProducts: builder.query({
query: (collectionId) => `/collections/${collectionId}/products`,
transformResponse: (response) => {
return {
data: response.data || [],
isEmpty: !response.data || response.data.length === 0,
};
},
}),
checkCollectionHasProducts: builder.query({
query: (collectionId) => `/collections/${collectionId}/products?limit=1`,
transformResponse: (response) => {
return {
hasProducts: response.data && response.data.length > 0,
};
},
}),
getCollectionProductsPaginated: builder.query({
query: ({ collectionId, page = 1, limit = 6, brands, min_price, max_price, sorting }) => {
const params = new URLSearchParams();
params.append('page', page);
if (limit) params.append('limit', limit);
if (brands) params.append('brands', brands);
if (min_price) params.append('min_price', min_price);
if (max_price) params.append('max_price', max_price);
if (sorting) params.append('sorting', sorting);
return `/collections/${collectionId}/products?${params.toString()}`;
},
transformResponse: (response) => ({
data: response.data || [],
pagination: response.pagination || {},
isEmpty: !response.data || response.data.length === 0,
}),
}),
}),
});
export const {
useGetCollectionsQuery,
useGetCollectionByIdQuery,
useGetCollectionProductsQuery,
useCheckCollectionHasProductsQuery,
useGetCollectionProductsPaginatedQuery,
useLazyGetCollectionProductsPaginatedQuery,
useLazyCheckCollectionHasProductsQuery,
} = collectionsApi;