import { useSuspenseQuery } from "@tanstack/react-query"; import { useNavigate } from "@tanstack/react-router"; import { DefaultRommStaleTime, RPC_URL } from "../../shared/constants"; import { CardList, GameMetaExtra } from "./CardList"; import classNames from "classnames"; import { rommApi } from "../scripts/clientApi"; import { SaveSource } from "../scripts/spatialNavigation"; import { JSX } from "react"; import { HardDrive } from "lucide-react"; import { GameCardFocusHandler } from "./GameCard"; export function PlatformsList (data: { id: string, setBackground: (url: string) => void; className?: string; onFocus?: GameCardFocusHandler; }) { const navigate = useNavigate(); const { data: platforms } = useSuspenseQuery( { queryKey: ['platform', 'all'], queryFn: async () => { const { data, error } = await rommApi.api.romm.platforms.get(); if (error) throw error; return data.platforms; }, refetchOnWindowFocus: false, staleTime: DefaultRommStaleTime, }); return ( a.updated_at.getTime() - b.updated_at.getTime()) .map((g) => { const badges: JSX.Element[] = []; badges.push({g.game_count}); if (g.hasLocal) badges.push(); const entry: GameMetaExtra = { id: g.slug, focusKey: g.slug, title: g.name, subtitle: g.family_name ?? "", previewUrl: "", badges, onFocus: () => data.setBackground( `https://picsum.photos/id/${10 + g.slug.length}/1920/1080.webp`, ), onSelect: () => { SaveSource('game-list'); navigate({ to: `/platform/${g.id.source}/${g.id.id}`, viewTransition: { types: ['zoom-in'] } }); }, preview: ({ focused }) =>
, }; return entry; })} onSelectGame={(id) => { }} /> ); }