import React, {useEffect, useState} from 'react'; import { Container, Box, Typography, Button, IconButton, Dialog, DialogTitle, DialogContent } from '@mui/material'; import CloseIcon from '@mui/icons-material/Close'; import AutoFixHighIcon from '@mui/icons-material/AutoFixHigh'; import ListIcon from '@mui/icons-material/List'; import BuildDetailsDialog from '../../components/BuildDetailsDialog'; import BuildCard from '../../components/BuildCard'; import {onGetApprovedBuilds, onGetAuthState, onCloneBuild} from '../+Layout.telefunc'; export default function HomePage() { const [data, setData] = useState(null); const [allRanked, setAllRanked] = useState([]); const [selectedBuildId, setSelectedBuildId] = useState(null); const [openRankedPopup, setOpenRankedPopup] = useState(false); useEffect(() => { async function loadSite() { try { const [ authData, highestRankedBuilds, communityBuilds, fullRankedList ] = await Promise.all([ onGetAuthState(), onGetApprovedBuilds({limit: 5, sort: 'rating_desc'}), onGetApprovedBuilds({limit: 12}), onGetApprovedBuilds({limit: 20, sort: 'rating_desc'}) ]); setData({ isLoggedIn: authData.isLoggedIn, userId: authData.userId, prebuilts: highestRankedBuilds, communityBuilds: communityBuilds }); setAllRanked(fullRankedList); } catch (error) { console.error("Error loading homepage data:", error); } } loadSite(); }, []); const handleCloneWrapper = async (buildId: number) => { if (!data?.isLoggedIn) return alert("Please login to clone builds!"); if (confirm(`Clone this build to your dashboard?`)) { await onCloneBuild({buildId}); alert("Build cloned! Check your dashboard."); setSelectedBuildId(null); } }; if (!data) return Loading Forge...; return ( Forge Your Ultimate Machine Build, share, discuss, and discover custom PC configurations. Hall of Fame The highest rated configurations from across the community. {data.prebuilts.map((build: any) => ( setSelectedBuildId(build.id)} /> ))} Community Forge Fresh builds from users around the world. {data.communityBuilds.map((build: any) => ( setSelectedBuildId(build.id)} /> ))} setSelectedBuildId(null)} onClone={handleCloneWrapper} /> setOpenRankedPopup(false)} maxWidth="xl" fullWidth scroll="paper"> Hall of Fame (Top Rated) setOpenRankedPopup(false)}> {allRanked.map((build: any, index: number) => ( #{index + 1} { setOpenRankedPopup(false); setSelectedBuildId(build.id); }} /> ))} ); }