"use client"; import { FriendsHomeSect } from "@/components/FriendsOnlineSection"; import { GameCard } from "@/components/gameCard"; import { HomeLoggedInHeader } from "@/components/loggedInHeader"; import { QuickTopUI, QuickTopUILogoPart } from "@/components/QuickTopUI"; import { VerifiedIcon } from "@/components/RobloxIcons"; import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; import { Card, CardContent } from "@/components/ui/card"; import { getOmniRecommendationsHome, OmniRecommendation } from "@/lib/omniRecommendation"; import { loadThumbnails } from "@/lib/thumbnailLoader"; import { AlertTriangleIcon } from "lucide-react"; import { useEffect, useState } from "react"; export default function Home() { const SORTS_ALLOWED_IDS = [100000003, 100000001]; const [rec, setRec] = useState(null); useEffect(() => { setTimeout(async () => { const r = await getOmniRecommendationsHome(); if (r) { setRec(r); loadThumbnails( Object.entries(r.contentMetadata.Game).map((a) => ({ type: "GameThumbnail", targetId: Number(a[1].rootPlaceId), format: "webp", size: "384x216" })) ).catch((a) => {}); } }, 1000); }, []); return (
Warning This is work in progess, you can follow the development process on GitHub.
{!rec ? (
{"Loading..."}
) : ( rec.sorts .filter((a) => SORTS_ALLOWED_IDS.includes(a.topicId)) .map((sort, idx) => (

{sort.topic}

{(sort.recommendationList || []).map( (recommendation, idxb) => { const game = rec.contentMetadata.Game[ recommendation.contentId.toString() ]; return ( ); } )}
)) )}
); }