summaryrefslogtreecommitdiff
path: root/src/api/lsfgApi.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/lsfgApi.ts')
-rw-r--r--src/api/lsfgApi.ts169
1 files changed, 72 insertions, 97 deletions
diff --git a/src/api/lsfgApi.ts b/src/api/lsfgApi.ts
index 16b6eab..3d4890e 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,62 +29,23 @@ 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 InstalledGame {
appid: string;
name: string;
nonSteam: boolean;
- transport: TargetTransport;
- executable?: string;
- arguments?: string;
- 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 GameConfigResult extends ConfigUpdateResult {
- appid?: string;
- exists?: boolean;
- config?: LsfgConfig;
+export interface GlobalConfig {
+ dll: string;
+ no_fp16: boolean;
}
export interface WorkaroundState {
@@ -96,77 +57,92 @@ export interface WorkaroundState {
enableZink: boolean;
}
-export interface WorkaroundStateResult {
- success: boolean;
- message?: string;
- error?: string;
+export interface WorkaroundStateResult extends ApiResult {
appid?: string;
+ app_id?: string;
state?: WorkaroundState | null;
wrapper_path?: string;
wrapper_owned?: boolean;
- shortcut_exe?: string | null;
command_token_added?: boolean;
- 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;
- message: string;
+export interface DebugFileContent {
+ id: string;
+ label: string;
+ path: string;
+ exists: boolean;
+ content?: string | null;
error?: string | null;
- available: boolean;
- extension_id: string;
- supported_branches: string[];
- installed_branches: string[];
- owned_branches: string[];
- ownership_uncertain: boolean;
}
-export interface FlatpakCleanupResult {
- success: boolean;
- message: string;
- error?: string | null;
- removed_branches: string[];
- preserved_branches: string[];
- ownership_uncertain: boolean;
+export interface DebugFileContentsResult extends ApiResult {
+ files?: DebugFileContent[];
}
-export interface FlatpakExtensionToggleResult {
- success: boolean;
- message: string;
- error?: string | null;
- runtime_branch: string;
+export interface FlatpakApp {
+ app_id: string;
+ app_name: string;
+ runtime?: string | null;
+ runtime_branch?: string | null;
+ runtime_ready: boolean;
+ prepared: boolean;
+ owned: boolean;
enabled: boolean;
- installed: boolean;
- owned_by_plugin: boolean;
- preserved: boolean;
+ profile: string;
+ config?: LsfgConfig | null;
+ workarounds: WorkaroundState;
+ error?: string | null;
+}
+
+export interface RunningFlatpakApp {
+ app_id: string;
+ active: boolean;
+ pid?: string;
+}
+
+export interface FlatpakAppsResult extends ApiResult {
+ apps?: FlatpakApp[];
+}
+
+export interface RunningFlatpakAppsResult extends ApiResult {
+ apps?: RunningFlatpakApp[];
+}
+
+export interface FlatpakAppResult extends ApiResult, Partial<FlatpakApp> {
+ app_id: string;
}
-// 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 removePluginOwnedFlatpakExtensions = callable<
- [],
- FlatpakCleanupResult
->("remove_plugin_owned_flatpak_extensions");
-
+export const getFlatpakApps = callable<[], FlatpakAppsResult>("get_flatpak_apps");
+export const enableFlatpakApp = callable<[string], FlatpakAppResult>("enable_flatpak_app");
+export const updateFlatpakConfig = callable<[string, LsfgConfig], FlatpakAppResult>("update_flatpak_config");
+export const setFlatpakWorkaroundState = callable<[string, WorkaroundState], WorkaroundStateResult>("set_flatpak_workaround_state");
+export const removeFlatpakApp = callable<[string], FlatpakAppResult>("remove_flatpak_app");
+export const getRunningFlatpakApps = callable<[], RunningFlatpakAppsResult>("get_running_flatpak_apps");
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");
@@ -176,8 +152,7 @@ export const getWorkaroundState = callable<[string], WorkaroundStateResult>("get
export const setWorkaroundState = callable<[
string,
WorkaroundState,
- string | null | undefined,
boolean,
- TargetTransport | null | undefined,
], WorkaroundStateResult>("set_workaround_state");
export const removeWorkaroundState = callable<[string], WorkaroundStateResult>("remove_workaround_state");
+export const getDebugFileContents = callable<[], DebugFileContentsResult>("get_debug_file_contents");