summaryrefslogtreecommitdiff
path: root/src/api/lsfgApi.ts
blob: 8eaad98fc7c564d82e1580d81d698403592923d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import { callable } from "@decky/api";
import { ConfigurationData } from "../config/configSchema";

// Type definitions for API responses
export interface InstallationResult {
  success: boolean;
  error?: string;
  message?: string;
  removed_files?: string[];
}

export interface InstallationStatus {
  installed: boolean;
  lossless_scaling_installed: boolean;
  lossless_scaling_status: string;
  error?: string;
}

export interface SteamBranchStatus {
  success: boolean;
  message: string;
  error?: string;
  installed: boolean;
  manifest_path?: string;
  selected_branch?: string;
  current_branch?: string;
  target_branch: string;
  needs_switch: boolean;
  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 interface InstalledGame { appid: string; name: string; nonSteam: boolean; }
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 FileContentResult {
  success: boolean;
  content?: string;
  path?: string;
  error?: string;
}

// Flatpak management interfaces
export interface FlatpakExtensionStatus {
  success: boolean;
  message: string;
  error?: string;
  installed_23_08: boolean;
  installed_24_08: boolean;
  installed_25_08: boolean;
}

export interface FlatpakApp {
  app_id: string;
  app_name: string;
  has_filesystem_override: boolean;
  has_env_override: boolean;
}

export interface FlatpakAppInfo {
  success: boolean;
  message: string;
  error?: string;
  apps: FlatpakApp[];
  total_apps: number;
}

export interface FlatpakOperationResult {
  success: boolean;
  message: string;
  error?: string;
  app_id?: string;
  operation?: 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");

// Flatpak management API functions
export const checkFlatpakExtensionStatus = callable<[], FlatpakExtensionStatus>("check_flatpak_extension_status");
export const installFlatpakExtension = callable<[string], FlatpakOperationResult>("install_flatpak_extension");
export const uninstallFlatpakExtension = callable<[string], FlatpakOperationResult>("uninstall_flatpak_extension");
export const getFlatpakApps = callable<[], FlatpakAppInfo>("get_flatpak_apps");
export const setFlatpakAppOverride = callable<[string], FlatpakOperationResult>("set_flatpak_app_override");
export const removeFlatpakAppOverride = callable<[string], FlatpakOperationResult>("remove_flatpak_app_override");

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");
export const resetGameConfig = callable<[string], GameConfigResult>("reset_game_config");
export const resetAllGameConfigs = callable<[], GameConfigsResult>("reset_all_game_configs");