summaryrefslogtreecommitdiff
path: root/src/components/FGModInstallerSection.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/FGModInstallerSection.tsx')
-rw-r--r--src/components/FGModInstallerSection.tsx139
1 files changed, 0 insertions, 139 deletions
diff --git a/src/components/FGModInstallerSection.tsx b/src/components/FGModInstallerSection.tsx
deleted file mode 100644
index b82e749..0000000
--- a/src/components/FGModInstallerSection.tsx
+++ /dev/null
@@ -1,139 +0,0 @@
-import { useState, useEffect } from "react";
-import { PanelSection, PanelSectionRow, ButtonItem } from "@decky/ui";
-import { runInstallFGMod, runUninstallFGMod } from "../api";
-import { OperationResult } from "./ResultDisplay";
-import { SmartClipboardButton } from "./SmartClipboardButton";
-import { createAutoCleanupTimer } from "../utils";
-import { TIMEOUTS, MESSAGES, STYLES } from "../utils/constants";
-import optiScalerImage from "../../assets/optiscaler.png";
-
-interface FGModInstallerSectionProps {
- pathExists: boolean | null;
- setPathExists: (exists: boolean | null) => void;
-}
-
-export function FGModInstallerSection({ pathExists, setPathExists }: FGModInstallerSectionProps) {
- const [installing, setInstalling] = useState(false);
- const [uninstalling, setUninstalling] = useState(false);
- const [installResult, setInstallResult] = useState<OperationResult | null>(null);
- const [uninstallResult, setUninstallResult] = useState<OperationResult | null>(null);
-
- useEffect(() => {
- if (installResult) {
- return createAutoCleanupTimer(() => setInstallResult(null), TIMEOUTS.resultDisplay);
- }
- return () => {}; // Ensure a cleanup function is always returned
- }, [installResult]);
-
- useEffect(() => {
- if (uninstallResult) {
- return createAutoCleanupTimer(() => setUninstallResult(null), TIMEOUTS.resultDisplay);
- }
- return () => {}; // Ensure a cleanup function is always returned
- }, [uninstallResult]);
-
- const handleInstallClick = async () => {
- try {
- setInstalling(true);
- const result = await runInstallFGMod();
- setInstallResult(result);
- if (result.status === "success") {
- setPathExists(true);
- }
- } catch (e) {
- console.error(e);
- } finally {
- setInstalling(false);
- }
- };
-
- const handleUninstallClick = async () => {
- try {
- setUninstalling(true);
- const result = await runUninstallFGMod();
- setUninstallResult(result);
- if (result.status === "success") {
- setPathExists(false);
- }
- } catch (e) {
- console.error(e);
- } finally {
- setUninstalling(false);
- }
- };
-
- return (
- <PanelSection>
- {pathExists === false ? (
- <PanelSectionRow>
- <div style={STYLES.statusNotInstalled}>
- {MESSAGES.modNotInstalled}
- </div>
- </PanelSectionRow>
- ) : null}
-
- {pathExists === false ? (
- <PanelSectionRow>
- <ButtonItem layout="below" onClick={handleInstallClick} disabled={installing}>
- {installing ? MESSAGES.installing : MESSAGES.installButton}
- </ButtonItem>
- </PanelSectionRow>
- ) : null}
-
- {pathExists === true ? (
- <PanelSectionRow>
- <ButtonItem layout="below" onClick={handleUninstallClick} disabled={uninstalling}>
- {uninstalling ? MESSAGES.uninstalling : MESSAGES.uninstallButton}
- </ButtonItem>
- </PanelSectionRow>
- ) : null}
-
- {pathExists === true ? (
- <PanelSectionRow>
- <div style={{
- display: 'flex',
- justifyContent: 'center',
- marginBottom: '16px'
- }}>
- <img
- src={optiScalerImage}
- alt="OptiScaler"
- style={{
- maxWidth: '100%',
- height: 'auto',
- borderRadius: '8px'
- }}
- />
- </div>
- </PanelSectionRow>
- ) : null}
-
- {pathExists === true ? (
- <PanelSectionRow>
- <div style={STYLES.instructionCard}>
- <div style={{ fontWeight: 'bold', marginBottom: '8px', color: 'var(--decky-accent-text)' }}>
- {MESSAGES.instructionTitle}
- </div>
- <div style={{ whiteSpace: 'pre-line' }}>
- {MESSAGES.instructionText}
- </div>
- </div>
- </PanelSectionRow>
- ) : null}
-
- {pathExists === true ? (
- <SmartClipboardButton
- command="~/fgmod/fgmod %command%"
- buttonText="Copy Patch Command"
- />
- ) : null}
-
- {pathExists === true ? (
- <SmartClipboardButton
- command="~/fgmod/fgmod-uninstaller.sh %command%"
- buttonText="Copy Unpatch Command"
- />
- ) : null}
- </PanelSection>
- );
-}