summaryrefslogtreecommitdiff
path: root/src/api/lsfgApi.ts
diff options
context:
space:
mode:
authorKurt Himebauch <136133082+xXJSONDeruloXx@users.noreply.github.com>2026-09-10 07:24:05 -0400
committerKurt Himebauch <136133082+xXJSONDeruloXx@users.noreply.github.com>2026-09-10 07:24:05 -0400
commit450d3e5e6612d467a00bb937538fded640c66ecb (patch)
tree3c07ceac1474e8e2211f64928a01f6a3aaa67bda /src/api/lsfgApi.ts
parent28ebc17785a8cca52f289b74261d1f310fd35904 (diff)
downloaddecky-lsfg-vk-450d3e5e6612d467a00bb937538fded640c66ecb.tar.gz
decky-lsfg-vk-450d3e5e6612d467a00bb937538fded640c66ecb.zip
refactor: simplify migration implementation
Diffstat (limited to 'src/api/lsfgApi.ts')
-rw-r--r--src/api/lsfgApi.ts101
1 files changed, 40 insertions, 61 deletions
diff --git a/src/api/lsfgApi.ts b/src/api/lsfgApi.ts
index 8179ef9..b96acec 100644
--- a/src/api/lsfgApi.ts
+++ b/src/api/lsfgApi.ts
@@ -1,11 +1,13 @@
import { callable } from "@decky/api";
import { ConfigurationData } from "../config/configSchema";
-// Type definitions for API responses
-export interface InstallationResult {
+interface ApiResult {
success: boolean;
- error?: string;
message?: string;
+ error?: string | null;
+}
+
+export interface InstallationResult extends ApiResult {
removed_files?: string[];
}
@@ -16,10 +18,8 @@ export interface InstallationStatus {
error?: string;
}
-export interface SteamBranchStatus {
- success: boolean;
+export interface SteamBranchStatus extends ApiResult {
message: string;
- error?: string;
installed: boolean;
manifest_path?: string;
selected_branch?: string;
@@ -29,36 +29,16 @@ export interface SteamBranchStatus {
restart_required: boolean;
}
-// Use centralized configuration data type
export type LsfgConfig = ConfigurationData;
-
-export interface ConfigUpdateResult {
- success: boolean;
- message?: string;
- error?: string;
-}
-
-export interface GameConfigEntry {
- appid: string;
- profile: string;
- config: LsfgConfig;
-}
export type TargetTransport =
| { kind: "host" }
| { kind: "flatpak"; flatpakAppId: string };
-
export type FlatpakTargetSupportStatus = "ready" | "needs-runtime" | "unsupported" | "error";
-export interface FlatpakTargetSupport {
- success: boolean;
- message?: string;
- error?: string | null;
- flatpak_app_id?: string;
- runtime?: string | null;
- runtime_branch?: string | null;
- support_status: FlatpakTargetSupportStatus;
- extension_installed: boolean;
- installed_branches: string[];
+export interface GameConfigEntry {
+ appid: string;
+ profile: string;
+ config: LsfgConfig;
}
export interface InstalledGame {
@@ -71,20 +51,19 @@ export interface InstalledGame {
startDir?: string;
flatpakSupport?: FlatpakTargetSupport;
}
-export interface InstalledGamesResult { success: boolean; games?: InstalledGame[]; error?: string; }
-export interface GlobalConfig { dll: string; no_fp16: boolean; }
-export interface GameConfigsResult {
- success: boolean;
- global_config?: GlobalConfig;
- games?: GameConfigEntry[];
- error?: string;
+export interface GlobalConfig {
+ dll: string;
+ no_fp16: boolean;
}
-export interface GameConfigResult extends ConfigUpdateResult {
- appid?: string;
- exists?: boolean;
- config?: LsfgConfig;
+export interface FlatpakTargetSupport extends ApiResult {
+ flatpak_app_id?: string;
+ runtime?: string | null;
+ runtime_branch?: string | null;
+ support_status: FlatpakTargetSupportStatus;
+ extension_installed: boolean;
+ installed_branches: string[];
}
export interface WorkaroundState {
@@ -96,10 +75,7 @@ export interface WorkaroundState {
enableZink: boolean;
}
-export interface WorkaroundStateResult {
- success: boolean;
- message?: string;
- error?: string;
+export interface WorkaroundStateResult extends ApiResult {
appid?: string;
state?: WorkaroundState | null;
wrapper_path?: string;
@@ -109,47 +85,50 @@ export interface WorkaroundStateResult {
transport?: TargetTransport | null;
}
-export interface FileContentResult {
- success: boolean;
+export interface GameConfigsResult extends ApiResult {
+ global_config?: GlobalConfig;
+ games?: GameConfigEntry[];
+}
+
+export interface GameConfigResult extends ApiResult {
+ appid?: string;
+ exists?: boolean;
+ config?: LsfgConfig;
+}
+
+export interface InstalledGamesResult extends ApiResult {
+ games?: InstalledGame[];
+}
+
+export interface FileContentResult extends ApiResult {
content?: string;
path?: string;
- error?: string;
}
-export interface FlatpakExtensionStatus {
- success: boolean;
+export interface FlatpakExtensionStatus extends ApiResult {
message: string;
- error?: string | null;
available: boolean;
extension_id: string;
supported_branches: string[];
installed_branches: string[];
}
-export interface FlatpakExtensionToggleResult {
- success: boolean;
+export interface FlatpakExtensionToggleResult extends ApiResult {
message: string;
- error?: string | null;
runtime_branch: string;
enabled: boolean;
installed: boolean;
}
-// API functions
export const installLsfgVk = callable<[], InstallationResult>("install_lsfg_vk");
export const uninstallLsfgVk = callable<[], InstallationResult>("uninstall_lsfg_vk");
export const checkLsfgVkInstalled = callable<[], InstallationStatus>("check_lsfg_vk_installed");
export const getLosslessScalingBranchStatus = callable<[], SteamBranchStatus>("get_lossless_scaling_branch_status");
export const getConfigFileContent = callable<[], FileContentResult>("get_config_file_content");
-
export const getFlatpakSupportStatus = callable<[], FlatpakExtensionStatus>("get_flatpak_support_status");
export const ensureFlatpakSupport = callable<[string], FlatpakTargetSupport>("ensure_flatpak_support");
export const repairFlatpakSupport = callable<[string], FlatpakTargetSupport>("repair_flatpak_support");
-export const setFlatpakExtensionEnabled = callable<
- [string, boolean],
- FlatpakExtensionToggleResult
->("set_flatpak_extension_enabled");
-
+export const setFlatpakExtensionEnabled = callable<[string, boolean], FlatpakExtensionToggleResult>("set_flatpak_extension_enabled");
export const getGameConfigs = callable<[], GameConfigsResult>("get_game_configs");
export const getInstalledGames = callable<[], InstalledGamesResult>("get_installed_games");
export const updateGameConfig = callable<[string, string, LsfgConfig], GameConfigResult>("update_game_config");