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<boolean | null>(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 (
+    <>
+      <FGModInstallerSection pathExists={pathExists} setPathExists={setPathExists} />
+      {pathExists === true ? (
+        <>
+          <InstalledGamesSection />
+          <DocumentationButton />
+        </>
+      ) : null}
+    </>
+  );
+}
 
 export default definePlugin(() => ({
   name: "Framegen Plugin",
   titleView: <div>Decky Framegen</div>,
   alwaysRender: true,
-  content: (
-    <>
-      <FGModInstallerSection />
-      <InstalledGamesSection />
-      <DocumentationButton />
-    </>
-  ),
+  content: <MainContent />,
   icon: <RiAiGenerate />,
   onDismount() {
     console.log("Framegen Plugin unmounted");
-- 
cgit v1.2.3

