import { ButtonItem, Field, Focusable, PanelSection, PanelSectionRow } from "@decky/ui"; import { useState } from "react"; import { ConfigurationData } from "../config/configSchema"; import { GameTarget } from "../hooks/useGameConfiguration"; import { GameConfigurationControls } from "./GameConfigurationControls"; interface Props { game: GameTarget; config: ConfigurationData; onConfigChange: ( fieldName: keyof ConfigurationData, value: boolean | number | string | string[], ) => Promise; onEnable: (appid: string) => Promise; onRepair: (appid: string) => Promise; } function targetDescription(game: GameTarget): string { if (game.transport.kind === "flatpak") return "Non-Steam ยท Flatpak"; return game.nonSteam ? "Non-Steam" : "Steam"; } export function NowPlayingTab({ game, config, onConfigChange, onEnable, onRepair, }: Props) { const [busy, setBusy] = useState(false); const supportNeedsRepair = game.configured && game.transport.kind === "flatpak" && game.flatpakSupport?.support_status !== "ready"; const handleEnable = async () => { if (busy) return; setBusy(true); try { await onEnable(game.appid); } finally { setBusy(false); } }; const handleRepair = async () => { if (busy) return; setBusy(true); try { await onRepair(game.appid); } finally { setBusy(false); } }; return ( {!game.configured && ( void handleEnable()}> {busy ? "Enabling..." : "Enable LSFG-VK"} )} {game.configured && supportNeedsRepair && ( void handleRepair()}> {busy ? "Repairing..." : "Repair Flatpak support"} )} {game.configured && ( )} ); }