summaryrefslogtreecommitdiff
path: root/src/hooks/useLsfgHooks.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/hooks/useLsfgHooks.ts')
-rw-r--r--src/hooks/useLsfgHooks.ts110
1 files changed, 21 insertions, 89 deletions
diff --git a/src/hooks/useLsfgHooks.ts b/src/hooks/useLsfgHooks.ts
index d9bbe3e..0b71ee9 100644
--- a/src/hooks/useLsfgHooks.ts
+++ b/src/hooks/useLsfgHooks.ts
@@ -1,22 +1,30 @@
-import { useState, useEffect, useCallback } from "react";
+import { useState, useEffect } from "react";
import {
checkLsfgVkInstalled,
- checkLosslessScalingDll,
- getLsfgConfig,
- updateLsfgConfigFromObject,
- type ConfigUpdateResult
+ getLosslessScalingBranchStatus,
+ type SteamBranchStatus
} from "../api/lsfgApi";
-import { ConfigurationData, getDefaults } from "../config/configSchema";
-import { showErrorToast, ToastMessages } from "../utils/toastUtils";
export function useInstallationStatus() {
const [isInstalled, setIsInstalled] = useState<boolean>(false);
const [installationStatus, setInstallationStatus] = useState<string>("");
+ const [losslessScalingInstalled, setLosslessScalingInstalled] = useState<boolean>(false);
+ const [losslessScalingStatus, setLosslessScalingStatus] = useState<string>("");
+ const [steamBranchStatus, setSteamBranchStatus] = useState<SteamBranchStatus | null>(null);
const checkInstallation = async () => {
try {
+ setSteamBranchStatus(await getLosslessScalingBranchStatus());
+ } catch (error) {
+ console.error("Error checking Lossless Scaling Steam branch:", error);
+ setSteamBranchStatus(null);
+ }
+
+ try {
const status = await checkLsfgVkInstalled();
setIsInstalled(status.installed);
+ setLosslessScalingInstalled(status.lossless_scaling_installed);
+ setLosslessScalingStatus(status.lossless_scaling_status || "Lossless Scaling Not Installed");
if (status.installed) {
setInstallationStatus("lsfg-vk Installed");
} else {
@@ -24,6 +32,9 @@ export function useInstallationStatus() {
}
return status.installed;
} catch (error) {
+ setSteamBranchStatus(null);
+ setLosslessScalingInstalled(false);
+ setLosslessScalingStatus("Lossless Scaling Not Installed");
setInstallationStatus("lsfg-vk Not Installed");
return false;
}
@@ -38,88 +49,9 @@ export function useInstallationStatus() {
installationStatus,
setIsInstalled,
setInstallationStatus,
+ losslessScalingInstalled,
+ losslessScalingStatus,
+ steamBranchStatus,
checkInstallation
};
}
-
-export function useDllDetection() {
- const [dllDetected, setDllDetected] = useState<boolean>(false);
- const [dllDetectionStatus, setDllDetectionStatus] = useState<string>("");
-
- const checkDllDetection = async () => {
- try {
- const result = await checkLosslessScalingDll();
- setDllDetected(result.detected);
- if (result.detected) {
- setDllDetectionStatus("Lossless Scaling Installed");
- } else {
- setDllDetectionStatus("Lossless Scaling Not Installed");
- }
- } catch (error) {
- setDllDetectionStatus("Lossless Scaling Not Installed");
- }
- };
-
- useEffect(() => {
- checkDllDetection();
- }, []);
-
- return {
- dllDetected,
- dllDetectionStatus
- };
-}
-
-export function useLsfgConfig() {
- const [config, setConfig] = useState<ConfigurationData>(() => getDefaults());
-
- const loadLsfgConfig = useCallback(async () => {
- try {
- const result = await getLsfgConfig();
- if (result.success && result.config) {
- setConfig(result.config);
- } else {
- console.log("lsfg config not available, using defaults:", result.error);
- setConfig(getDefaults());
- }
- } catch (error) {
- console.error("Error loading lsfg config:", error);
- setConfig(getDefaults());
- }
- }, []);
-
- const updateConfig = useCallback(async (newConfig: ConfigurationData): Promise<ConfigUpdateResult> => {
- try {
- const result = await updateLsfgConfigFromObject(newConfig);
- if (result.success) {
- setConfig(newConfig);
- } else {
- showErrorToast(
- ToastMessages.CONFIG_UPDATE_ERROR.title,
- result.error || ToastMessages.CONFIG_UPDATE_ERROR.body
- );
- }
- return result;
- } catch (error) {
- showErrorToast(ToastMessages.CONFIG_UPDATE_ERROR.title, String(error));
- return { success: false, error: String(error) };
- }
- }, []);
-
- const updateField = useCallback(async (fieldName: keyof ConfigurationData, value: boolean | number | string): Promise<ConfigUpdateResult> => {
- const newConfig = { ...config, [fieldName]: value };
- return updateConfig(newConfig);
- }, [config, updateConfig]);
-
- useEffect(() => {
- loadLsfgConfig();
- }, []);
-
- return {
- config,
- setConfig,
- loadLsfgConfig,
- updateConfig,
- updateField
- };
-}