diff --git a/lib/src/MicoSDeck.ts b/lib/src/MicoSDeck.ts index c0ca581..3476b8c 100644 --- a/lib/src/MicoSDeck.ts +++ b/lib/src/MicoSDeck.ts @@ -131,7 +131,7 @@ export class MicroSDeck { } async fetchCurrent() { - this.currentCardAndGames = await fetchCurrentCardAndGames(this.fetchProps) || this.currentCardAndGames; + this.currentCardAndGames = await fetchCurrentCardAndGames(this.fetchProps); } async fetchCardsAndGames() { this.cardsAndGames = await fetchCardsAndGames(this.fetchProps) || this.cardsAndGames || []; diff --git a/lib/src/components/MicroSDeckContext.tsx b/lib/src/components/MicroSDeckContext.tsx index e38e8c5..2b654d7 100644 --- a/lib/src/components/MicroSDeckContext.tsx +++ b/lib/src/components/MicroSDeckContext.tsx @@ -3,7 +3,7 @@ import { MicroSDeck } from "../MicoSDeck.js"; import { CardAndGames, CardsAndGames } from "../types.js"; const MicroSDeckContext = createContext(null as any); -export const useMicroSDeckContext = () => useContext(MicroSDeckContext); +export const useMicroSDeckContext = () => useContext(MicroSDeckContext) || {}; interface ProviderProps { microSDeck: MicroSDeck diff --git a/src/components/LibraryModal.tsx b/src/components/LibraryModal.tsx index 712cfc9..de16a48 100644 --- a/src/components/LibraryModal.tsx +++ b/src/components/LibraryModal.tsx @@ -2,18 +2,19 @@ import React, { ReactElement, useEffect, useRef, useState } from 'react'; import { FaSdCard } from 'react-icons/fa'; import { Logger } from '../Logging'; import { API_URL, UNNAMED_CARD_NAME } from '../const'; -import { useCardsForGame } from "../../lib/src" +import { useCardsForGame, useMicroSDeckContext } from "../../lib/src" import { findModule } from "@decky/ui" const logger = Logger.Child({ module: "patching" }); export default function LibraryModal({ appId: gameId }: { appId: string }): ReactElement { const { cards } = useCardsForGame({ url: API_URL, logger: Logger, gameId }); + const { currentCardAndGames } = useMicroSDeckContext(); + const [ currentCard ] = (currentCardAndGames || [undefined]); var ref = useRef(); - const bottomMargin = 8; - const height = 20; + const bottomMargin = 4; const [top, setTop] = useState(210); useEffect(() => { @@ -71,18 +72,27 @@ export default function LibraryModal({ appId: gameId }: { appId: string }): Reac return (<>); } + return (
+ {cards.map(card => ())} +
+ ); +} + +function CardLabel({ cardName, isCurrent }: { cardName: string, isCurrent: boolean }): ReactElement { + return ( +
- {cards.map(v => v.name || UNNAMED_CARD_NAME).join(", ")} + {cardName}
) diff --git a/src/index.tsx b/src/index.tsx index 8dbea65..b9065dc 100755 --- a/src/index.tsx +++ b/src/index.tsx @@ -125,7 +125,7 @@ export default definePlugin(() => { Logger.Log("Started MicroSDeck"); - const patch = PatchAppScreen(); + const patch = PatchAppScreen(window.MicroSDeck); routerHook.addRoute(DOCUMENTATION_PATH, () => ( {throw "MicroSDeck not initialized";})()}> diff --git a/src/patch/PatchAppScreen.tsx b/src/patch/PatchAppScreen.tsx index 8a88ba7..d4927f5 100644 --- a/src/patch/PatchAppScreen.tsx +++ b/src/patch/PatchAppScreen.tsx @@ -8,8 +8,9 @@ import { ReactElement } from 'react' import { routerHook } from '@decky/api'; import LibraryModal from '../components/LibraryModal'; import { Logger } from '../Logging'; +import { MicroSDeck, MicroSDeckContextProvider } from '../../lib/src'; -function PatchLibraryApp() { +function PatchLibraryApp(microSDeck: MicroSDeck) { const path = '/library/app/:appid'; Logger.Log("Patching {path}", { path }); @@ -55,7 +56,9 @@ function PatchLibraryApp() { container.props.children.splice( 1, 0, - + + + , ) return element