summaryrefslogtreecommitdiff
path: root/py_modules
diff options
context:
space:
mode:
authorxXJSONDeruloXx <danielhimebauch@gmail.com>2026-09-09 20:45:20 -0400
committerxXJSONDeruloXx <danielhimebauch@gmail.com>2026-09-09 20:45:20 -0400
commitfb4d053213bdbda271a54b517a11a89c4780f80a (patch)
treecf63819208ceb75c49c0ad08de8edd1b2b81082c /py_modules
parentcc1e6f47dd9838b066822162a607d2859c043aff (diff)
downloaddecky-lsfg-vk-fb4d053213bdbda271a54b517a11a89c4780f80a.tar.gz
decky-lsfg-vk-fb4d053213bdbda271a54b517a11a89c4780f80a.zip
fix: restore profile and Flatpak controls
Diffstat (limited to 'py_modules')
-rw-r--r--py_modules/lsfg_vk/flatpak_service.py56
-rw-r--r--py_modules/lsfg_vk/plugin.py3
2 files changed, 51 insertions, 8 deletions
diff --git a/py_modules/lsfg_vk/flatpak_service.py b/py_modules/lsfg_vk/flatpak_service.py
index 071b29c..c0a9c0c 100644
--- a/py_modules/lsfg_vk/flatpak_service.py
+++ b/py_modules/lsfg_vk/flatpak_service.py
@@ -299,11 +299,6 @@ class FlatpakService(BaseService):
version = self._validate_runtime(version)
if not self.check_flatpak_available():
raise FileNotFoundError("Flatpak is not available on this system")
- bundle_path = self._bundled_extension_path(version)
- if not bundle_path.is_file():
- raise FileNotFoundError(
- f"Bundled Flatpak extension not found at {bundle_path}; reinstall the plugin"
- )
with self._lock:
owned, uncertain = self._read_owned_branches()
if uncertain:
@@ -318,7 +313,14 @@ class FlatpakService(BaseService):
f"lsfg-vk {version} runtime extension is already installed",
runtime_branch=version,
installed=True,
+ enabled=True,
owned_by_plugin=version in owned,
+ preserved=version not in owned,
+ )
+ bundle_path = self._bundled_extension_path(version)
+ if not bundle_path.is_file():
+ raise FileNotFoundError(
+ f"Bundled Flatpak extension not found at {bundle_path}; reinstall the plugin"
)
result = self._run_flatpak_command(
[
@@ -346,7 +348,9 @@ class FlatpakService(BaseService):
f"lsfg-vk {version} runtime extension installed",
runtime_branch=version,
installed=True,
+ enabled=True,
owned_by_plugin=True,
+ preserved=False,
)
except Exception as error:
return self._error_response(
@@ -354,7 +358,9 @@ class FlatpakService(BaseService):
str(error),
runtime_branch=version,
installed=False,
+ enabled=False,
owned_by_plugin=False,
+ preserved=False,
)
def ensure_extension(self, version: str) -> Dict[str, Any]:
@@ -424,15 +430,29 @@ class FlatpakService(BaseService):
raise RuntimeError(
"Flatpak ownership metadata is uncertain; refusing to uninstall"
)
+ installed = self._installed_extension_branches()
if version not in owned:
+ if version in installed:
+ return self._success_response(
+ dict,
+ f"Preserved Flatpak extension {version}; it is not plugin-owned",
+ runtime_branch=version,
+ removed=False,
+ installed=True,
+ enabled=True,
+ owned_by_plugin=False,
+ preserved=True,
+ )
return self._success_response(
dict,
- f"Preserved Flatpak extension {version}; it is not plugin-owned",
+ f"Flatpak extension {version} is already not installed",
runtime_branch=version,
removed=False,
- preserved=True,
+ installed=False,
+ enabled=False,
+ owned_by_plugin=False,
+ preserved=False,
)
- installed = self._installed_extension_branches()
if version in installed:
result = self._run_flatpak_command(
[
@@ -458,6 +478,9 @@ class FlatpakService(BaseService):
f"Plugin-owned lsfg-vk {version} runtime extension removed",
runtime_branch=version,
removed=True,
+ installed=False,
+ enabled=False,
+ owned_by_plugin=False,
preserved=False,
)
except Exception as error:
@@ -466,8 +489,25 @@ class FlatpakService(BaseService):
str(error),
runtime_branch=version,
removed=False,
+ installed=False,
+ enabled=False,
+ owned_by_plugin=False,
+ preserved=False,
+ )
+
+ def set_extension_enabled(self, version: str, enabled: bool) -> Dict[str, Any]:
+ """Set one runtime branch to the requested state, safely and idempotently."""
+ if type(enabled) is not bool:
+ return self._error_response(
+ dict,
+ "enabled must be a boolean",
+ runtime_branch=version,
+ installed=False,
+ enabled=False,
+ owned_by_plugin=False,
preserved=False,
)
+ return self.install_extension(version) if enabled else self.uninstall_extension(version)
def remove_plugin_owned_extensions(self) -> Dict[str, Any]:
"""Uninstall only branches recorded as installed by this plugin."""
diff --git a/py_modules/lsfg_vk/plugin.py b/py_modules/lsfg_vk/plugin.py
index cb2d3df..76a4250 100644
--- a/py_modules/lsfg_vk/plugin.py
+++ b/py_modules/lsfg_vk/plugin.py
@@ -160,6 +160,9 @@ class Plugin:
async def repair_flatpak_support(self, flatpak_app_id: str) -> Dict[str, Any]:
return self.flatpak_service.ensure_app_support(flatpak_app_id)
+ async def set_flatpak_extension_enabled(self, version: str, enabled: bool) -> Dict[str, Any]:
+ return self.flatpak_service.set_extension_enabled(version, enabled)
+
async def remove_plugin_owned_flatpak_extensions(self) -> Dict[str, Any]:
return self.flatpak_service.remove_plugin_owned_extensions()