From 9573344450de451b8f9c7295c11318010d67f1d5 Mon Sep 17 00:00:00 2001 From: Kurt Himebauch <136133082+xXJSONDeruloXx@users.noreply.github.com> Date: Mon, 21 Jul 2025 10:05:39 -0400 Subject: Refresh UI (#117) * initial visual refinement * rm dupe status pops * hide other menus if uninstalled opti * bump ver * fix ver bump --- src/index.tsx | 42 +++++++++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 7 deletions(-) (limited to 'src/index.tsx') diff --git a/src/index.tsx b/src/index.tsx index 41f8dc3..0bd00c0 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,20 +1,48 @@ import { definePlugin } from "@decky/api"; import { RiAiGenerate } from "react-icons/ri"; +import { useState, useEffect } from "react"; import { FGModInstallerSection } from "./components/FGModInstallerSection"; import { InstalledGamesSection } from "./components/InstalledGamesSection"; import { DocumentationButton } from "./components/DocumentationButton"; +import { checkFGModPath } from "./api"; +import { safeAsyncOperation } from "./utils"; +import { TIMEOUTS } from "./utils/constants"; + +function MainContent() { + const [pathExists, setPathExists] = useState(null); + + useEffect(() => { + const checkPath = async () => { + const result = await safeAsyncOperation( + async () => await checkFGModPath(), + 'MainContent -> checkPath' + ); + if (result) setPathExists(result.exists); + }; + + checkPath(); // Initial check + const intervalId = setInterval(checkPath, TIMEOUTS.pathCheck); // Check every 3 seconds + return () => clearInterval(intervalId); // Cleanup interval on component unmount + }, []); + + return ( + <> + + {pathExists === true ? ( + <> + + + + ) : null} + + ); +} export default definePlugin(() => ({ name: "Framegen Plugin", titleView:
Decky Framegen
, alwaysRender: true, - content: ( - <> - - - - - ), + content: , icon: , onDismount() { console.log("Framegen Plugin unmounted"); -- cgit v1.2.3