import { ButtonItem, ConfirmModal, Field, PanelSection, PanelSectionRow, showModal } from "@decky/ui"; import { useEffect, useState } from "react"; import { getFlatpakSupportStatus, removePluginOwnedFlatpakExtensions, type FlatpakExtensionStatus, type SteamBranchStatus, } from "../api/lsfgApi"; import { InstallationButton } from "./InstallationButton"; import { StatusDisplay } from "./StatusDisplay"; interface SetupTabProps { isInstalled: boolean; installationStatus: string; losslessScalingInstalled: boolean; losslessScalingStatus: string; steamBranchStatus: SteamBranchStatus | null; isInstalling: boolean; isUninstalling: boolean; onInstall: () => void; onUninstall: () => void; flatpakRelevant: boolean; } function FlatpakSupportDiagnostics({ relevant }: { relevant: boolean }) { const [status, setStatus] = useState(null); const [advanced, setAdvanced] = useState(false); const [busy, setBusy] = useState(false); const refresh = async () => { try { setStatus(await getFlatpakSupportStatus()); } catch (error) { setStatus({ success: false, message: "", error: String(error), available: false, extension_id: "", supported_branches: [], installed_branches: [], owned_branches: [], ownership_uncertain: false, }); } }; useEffect(() => { if (relevant) void refresh(); }, [relevant]); if (!relevant || !status?.available) return null; const confirmCleanup = () => { showModal( { setBusy(true); try { await removePluginOwnedFlatpakExtensions(); await refresh(); } finally { setBusy(false); } }} onCancel={() => {}} />, ); }; return ( setAdvanced((value) => !value)}> {advanced ? "Hide runtime details" : "Show runtime details"} {advanced && ( <> {status.supported_branches.map((branch) => ( ))} {status.ownership_uncertain && ( )} {busy ? "Removing..." : "Remove plugin-installed extensions"} )} ); } export function SetupTab({ isInstalled, installationStatus, losslessScalingInstalled, losslessScalingStatus, steamBranchStatus, isInstalling, isUninstalling, onInstall, onUninstall, flatpakRelevant, }: SetupTabProps) { return ( <> ); }