33// Name of the component: Products.tsx
44// Developer: Aleksandar Kuzmanovic
55// Version: 1.0
6- // Component call: <Products slug={slug } />
7- // Input parameters: { slug }: any
6+ // Component call: <Products params={params} searchParams={searchParams } />
7+ // Input parameters: { params, searchParams }: { params: { slug?: string[] } , searchParams: { [key: string]: string | string[] | undefined } }
88// Output: products grid
99// *********************
1010
1111import React from "react" ;
1212import ProductItem from "./ProductItem" ;
1313
14- const Products = async ( { slug } : any ) => {
14+ const Products = async ( { params , searchParams } : { params : { slug ?: string [ ] } , searchParams : { [ key : string ] : string | string [ ] | undefined } } ) => {
1515 // getting all data from URL slug and preparing everything for sending GET request
16- const inStockNum = slug ?. searchParams ?. inStock === "true" ? 1 : 0 ;
17- const outOfStockNum = slug ?. searchParams ?. outOfStock === "true" ? 1 : 0 ;
18- const page = slug ?. searchParams ?. page ? Number ( slug ?. searchParams ?. page ) : 1 ;
16+ const inStockNum = searchParams ?. inStock === "true" ? 1 : 0 ;
17+ const outOfStockNum = searchParams ?. outOfStock === "true" ? 1 : 0 ;
18+ const page = searchParams ?. page ? Number ( searchParams ?. page ) : 1 ;
1919
2020 let stockMode : string = "lte" ;
2121
@@ -40,28 +40,18 @@ const Products = async ({ slug }: any) => {
4040 // sending API request with filtering, sorting and pagination for getting all products
4141 const data = await fetch (
4242 `http://localhost:3001/api/products?filters[price][$lte]=${
43- slug ?. searchParams ?. price || 3000
43+ searchParams ?. price || 3000
4444 } &filters[rating][$gte]=${
45- Number ( slug ?. searchParams ?. rating ) || 0
45+ Number ( searchParams ?. rating ) || 0
4646 } &filters[inStock][$${ stockMode } ]=1&${
47- slug ?. params ?. slug ?. length > 0
48- ? `filters[category][$equals]=${ slug ?. params ?. slug } &`
47+ params ?. slug ?. length ! > 0
48+ ? `filters[category][$equals]=${ params ?. slug } &`
4949 : ""
50- } sort=${ slug ?. searchParams ?. sort } &page=${ page } `
50+ } sort=${ searchParams ?. sort } &page=${ page } `
5151 ) ;
5252
5353 const products = await data . json ( ) ;
5454
55- /*
56- const req = await fetch(
57- `http://localhost:1337/api/products?populate=*&filters[price][$lte]=${
58- searchParams?.price || 1000
59- }${searchParams.women === "true" ? "&filters[category][$eq]=women" : ""}${searchParams.womenNewEdition === "true" ? "&filters[category][$eq]=women%20new%20edition" : ""}&filters[rating][$gte]=${
60- searchParams?.rating || 1
61- }`
62- );
63- const products = await req.json();
64- */
6555 return (
6656 < div className = "grid grid-cols-3 justify-items-center gap-x-2 gap-y-5 max-[1300px]:grid-cols-3 max-lg:grid-cols-2 max-[500px]:grid-cols-1" >
6757 { products . length > 0 ? (
0 commit comments