"use client"; import { BestFriendsHomeSect, FriendsHomeSect } from "@/components/roblox/FriendsOnline"; import { GameCard } from "@/components/roblox/GameCard"; import { HomeLoggedInHeader } from "@/components/site/HomeUserHeader"; 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 { useQuery } from "@tanstack/react-query"; import { AlertTriangleIcon } from "lucide-react"; export default function Home() { const SORTS_ALLOWED_IDS = [100000003, 100000001]; const { data: rec } = useQuery({ queryKey: ["omni-recommendations"], queryFn: async () => { const r = await getOmniRecommendationsHome(); if (r) { loadThumbnails( Object.entries(r.contentMetadata.Game).map((a) => ({ type: "GameThumbnail", targetId: Number(a[1].rootPlaceId), format: "webp", size: "384x216" })) ).catch((a) => {}); } return r; }, staleTime: 300000, // 5 minutes refetchOnWindowFocus: false }); 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 ( ); } )}
)) )}
); }