Dwinzo_dev/app/src/modules/market/CardsContainer.tsx

193 lines
4.0 KiB
TypeScript
Raw Normal View History

2025-03-28 08:25:30 +00:00
import React, { useEffect, useState } from "react";
2025-03-26 06:00:17 +00:00
import Card from "./Card";
2025-03-26 10:51:35 +00:00
import AssetPreview from "./AssetPreview";
import RenderOverlay from "../../components/templates/Overlay";
2025-03-28 08:25:30 +00:00
import { fetchAssets } from "../../services/marketplace/fetchAssets";
interface ModelData {
CreatedBy: string;
animated: string | null;
category: string;
description: string;
filename: string;
isArchieve: boolean;
modelfileID: string;
tags: string;
thumbnail: string;
uploadDate: number;
_id: string;
}
2025-03-26 06:00:17 +00:00
const CardsContainer: React.FC = () => {
2025-03-28 08:25:30 +00:00
const [models, setModels] = useState<ModelData[]>([]);
2025-03-26 10:51:35 +00:00
const array = [
{
id: 1,
name: "Asset 1",
uploadedOn: "12 Jan 23",
price: 36500,
rating: 4.5,
views: 500,
},
{
id: 2,
name: "Asset 2",
uploadedOn: "14 Jan 23",
price: 45000,
rating: 4.0,
views: 500,
},
{
id: 3,
name: "Asset 3",
uploadedOn: "15 Jan 23",
price: 52000,
rating: 4.8,
views: 500,
},
{
id: 4,
name: "Asset 4",
uploadedOn: "18 Jan 23",
price: 37000,
rating: 3.9,
views: 500,
},
{
id: 5,
name: "Asset 5",
uploadedOn: "20 Jan 23",
price: 60000,
rating: 5.0,
views: 500,
},
{
id: 6,
name: "Asset 6",
uploadedOn: "22 Jan 23",
price: 46000,
rating: 4.2,
views: 500,
},
{
id: 7,
name: "Asset 7",
uploadedOn: "25 Jan 23",
price: 38000,
rating: 4.3,
views: 500,
},
{
id: 8,
name: "Asset 8",
uploadedOn: "27 Jan 23",
price: 41000,
rating: 4.1,
views: 500,
},
{
id: 9,
name: "Asset 9",
uploadedOn: "30 Jan 23",
price: 55000,
rating: 4.6,
views: 500,
},
{
id: 10,
name: "Asset 10",
uploadedOn: "2 Feb 23",
price: 49000,
rating: 4.4,
views: 500,
},
{
id: 11,
name: "Asset 11",
uploadedOn: "5 Feb 23",
price: 62000,
rating: 5.0,
views: 500,
},
{
id: 12,
name: "Asset 12",
uploadedOn: "7 Feb 23",
price: 53000,
rating: 4.7,
views: 500,
},
];
const [selectedCard, setSelectedCard] = useState<{
assetName: string;
2025-03-28 08:25:30 +00:00
uploadedOn: number;
2025-03-26 10:51:35 +00:00
price: number;
rating: number;
views: number;
} | null>(null);
const handleCardSelect = (cardData: {
assetName: string;
2025-03-28 08:25:30 +00:00
uploadedOn: number;
2025-03-26 10:51:35 +00:00
price: number;
rating: number;
views: number;
}) => {
setSelectedCard(cardData);
};
2025-03-28 08:25:30 +00:00
const getAllAssets = async () => {
try {
const assetsData = await fetchAssets();
const reversedData = [...assetsData]?.reverse().slice(0, 8);
setModels(reversedData);
} catch (error) {
} finally {
}
};
useEffect(() => {
getAllAssets();
}, []);
2025-03-26 06:00:17 +00:00
return (
<div className="cards-container-container">
<div className="header">Products You May Like</div>
<div className="cards-wrapper-container">
2025-03-28 08:25:30 +00:00
{/* {array.map((asset) => (
2025-03-26 10:51:35 +00:00
<Card
key={asset.id}
assetName={asset.name}
uploadedOn={asset.uploadedOn}
price={asset.price}
rating={asset.rating}
views={asset.views}
onSelectCard={handleCardSelect}
/>
2025-03-28 08:25:30 +00:00
))} */}
{models.length > 0 &&
models.map((assetDetail) => (
<Card
key={assetDetail._id}
assetName={assetDetail?.filename}
uploadedOn={assetDetail.uploadDate}
price={36500}
rating={4.5}
views={500}
onSelectCard={handleCardSelect}
image={assetDetail.thumbnail}
2025-03-26 10:51:35 +00:00
/>
2025-03-28 08:25:30 +00:00
))}
{/* <RenderOverlay> */}
{selectedCard && (
<AssetPreview
selectedCard={selectedCard}
setSelectedCard={setSelectedCard}
/>
)}
2025-03-26 10:51:35 +00:00
{/* </RenderOverlay> */}
2025-03-26 06:00:17 +00:00
</div>
</div>
);
};
2025-03-26 10:51:35 +00:00
export default CardsContainer;