converted products page into server side.
This commit is contained in:
parent
0deee17031
commit
d4373138fa
@ -1,40 +1,33 @@
|
|||||||
'use client';
|
|
||||||
|
|
||||||
import { HttpTypes } from '@medusajs/types';
|
import { HttpTypes } from '@medusajs/types';
|
||||||
// import Image from 'next/image';
|
// import Image from 'next/image';
|
||||||
import Link from 'next/link';
|
import Link from 'next/link';
|
||||||
import { useEffect, useState } from 'react';
|
// import { useEffect, useState } from 'react';
|
||||||
|
|
||||||
export default function ProductsPage() {
|
async function fetchProducts() {
|
||||||
const [loading, setLoading] = useState(true);
|
|
||||||
|
|
||||||
const [products, setProducts] = useState<HttpTypes.StoreProduct[]>([]);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (!loading) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const params = new URLSearchParams({
|
const params = new URLSearchParams({
|
||||||
// fields: `*variants.calculated_price`,
|
|
||||||
fields: `*variants.prices.*`,
|
fields: `*variants.prices.*`,
|
||||||
region_id: process.env.NEXT_PUBLIC_DEFAULT_REGION_ID as string,
|
region_id: process.env.NEXT_PUBLIC_DEFAULT_REGION_ID as string,
|
||||||
});
|
});
|
||||||
console.log('url: ', `${process.env.NEXT_PUBLIC_BASE_URL}/store/products?${params}`);
|
|
||||||
fetch(`${process.env.NEXT_PUBLIC_BASE_URL}/store/products?${params}`, {
|
const response = await fetch(`${process.env.NEXT_PUBLIC_BASE_URL}/store/products?${params}`, {
|
||||||
credentials: 'include',
|
credentials: 'include',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
'x-publishable-api-key': process.env.NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY as string,
|
'x-publishable-api-key': process.env.NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY as string,
|
||||||
},
|
},
|
||||||
})
|
|
||||||
.then((res) => res.json())
|
|
||||||
.then((data) => data.products)
|
|
||||||
.then((data) => {
|
|
||||||
setProducts(data);
|
|
||||||
setLoading(false);
|
|
||||||
});
|
});
|
||||||
}, [loading]);
|
|
||||||
|
|
||||||
|
if (!response.ok) {
|
||||||
|
console.error('Failed to fetch products:', response.statusText);
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
const data = await response.json();
|
||||||
|
return data.products;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default async function ProductsPage() {
|
||||||
|
const products: HttpTypes.StoreProduct[] = await fetchProducts();
|
||||||
return (
|
return (
|
||||||
<div className='container mx-auto py-12 pt-28'>
|
<div className='container mx-auto py-12 pt-28'>
|
||||||
{/* Products Grid */}
|
{/* Products Grid */}
|
||||||
|
Loading…
Reference in New Issue
Block a user