summaryrefslogtreecommitdiff
path: root/src/index.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/index.tsx')
-rw-r--r--src/index.tsx42
1 files changed, 35 insertions, 7 deletions
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");