From fb4d053213bdbda271a54b517a11a89c4780f80a Mon Sep 17 00:00:00 2001 From: xXJSONDeruloXx Date: Wed, 9 Sep 2026 20:45:20 -0400 Subject: fix: restore profile and Flatpak controls --- py_modules/lsfg_vk/flatpak_service.py | 56 ++++++++++++++++++++++++++++++----- 1 file changed, 48 insertions(+), 8 deletions(-) (limited to 'py_modules/lsfg_vk/flatpak_service.py') 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.""" -- cgit v1.2.3