feat: add product generation and pagination components
- Implemented product generation for categories with a helper function to create 50 products per category. - Added image assets for English and Persian language support. - Created a reusable Pagination component for navigating through product lists. - Developed ProductList component to display products with pagination support. - Defined TypeScript interfaces for product list props and API response structure.
This commit is contained in:
@@ -1,32 +1,55 @@
|
||||
'use server';
|
||||
|
||||
import type { IProductCategoryCardProps } from '@/components/pages/productCategories/productCategoryCard.d';
|
||||
import type { IProductCardProps } from '@/components/pages/products/productCard.d';
|
||||
import api from '@/lib/axios';
|
||||
import { IResponse } from '@/models/response';
|
||||
import { cookies } from 'next/headers';
|
||||
|
||||
export function getProductCategories() {
|
||||
export async function getProductCategories() {
|
||||
const cookiesStore = await cookies();
|
||||
return api
|
||||
.get('/product_categories')
|
||||
.get('/product_categories', {
|
||||
headers: {
|
||||
Cookie: cookiesStore.toString(),
|
||||
},
|
||||
})
|
||||
.then(({ data }) => {
|
||||
return Promise.resolve(data.data);
|
||||
})
|
||||
.catch((error) => Promise.reject(error));
|
||||
}
|
||||
|
||||
export function getProductCategoryById(
|
||||
export async function getProductCategoryById(
|
||||
categoryId: string,
|
||||
): Promise<IProductCategoryCardProps> {
|
||||
const cookiesStore = await cookies();
|
||||
return api
|
||||
.get(`/product_categories/${categoryId}`)
|
||||
.get(`/product_categories/${categoryId}`, {
|
||||
headers: {
|
||||
Cookie: cookiesStore.toString(),
|
||||
},
|
||||
})
|
||||
.then(({ data }) => {
|
||||
return Promise.resolve(data.data);
|
||||
})
|
||||
.catch((error) => Promise.reject(error));
|
||||
}
|
||||
|
||||
export function getProducts(categoryId: string): Promise<IProductCardProps[]> {
|
||||
export async function getProducts(
|
||||
categoryId: string,
|
||||
page = 1,
|
||||
): Promise<IResponse<IProductCardProps[]>> {
|
||||
const cookiesStore = await cookies();
|
||||
return api
|
||||
.get(`/product_categories/${categoryId}/products`)
|
||||
.get(`/product_categories/${categoryId}/products`, {
|
||||
headers: {
|
||||
Cookie: cookiesStore.toString(),
|
||||
},
|
||||
params: { page },
|
||||
})
|
||||
.then(({ data }) => {
|
||||
return Promise.resolve(data.data);
|
||||
return Promise.resolve(data);
|
||||
})
|
||||
.catch((error) => Promise.reject(error));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user