"use client"; import { BestFriendsHomeSect, FriendsHomeSect } from "@/components/roblox/FriendsOnline"; import { GameCard } from "@/components/roblox/GameCard"; import { HomeLoggedInHeader } from "@/components/site/HomeUserHeader"; import { OutfitSelector } from "@/components/site/OutfitQuickChooser"; import { QuickTopUI, QuickTopUILogoPart } from "@/components/site/QuickTopUI"; 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 Image from "next/image"; 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 ( ); } )}
)) )}
); }