refactor(webui_client): extract install/remove/update logic into services

Replace monolithic client_setup.py, client_config_setup.py and their

remove counterparts with service classes under components/webui_client/services.

Update menus and core install/update menus to call the new services.

Add unit tests for services, client_utils and menu wiring.
This commit is contained in:
dw-0
2026-07-11 17:49:39 +02:00
parent 93e7bb7212
commit 09dd8298f7
30 changed files with 2868 additions and 566 deletions
@@ -20,6 +20,7 @@ from components.klipper.klipper import Klipper
from components.webui_client import MODULE_PATH
from components.webui_client.base_data import (
BaseWebClient,
BaseWebClientConfig,
WebClientType,
)
from components.webui_client.client_dialogs import print_client_port_select_dialog
@@ -482,3 +483,18 @@ def set_listen_port(client: BaseWebClient, curr_port: int, new_port: int) -> Non
with open(config, "w") as f:
f.writelines(lines)
def create_client_config_symlink(
client_config: BaseWebClientConfig, klipper_instances: List[Klipper]
) -> None:
"""Symlink the client config file into every Klipper instance's config dir."""
for instance in klipper_instances:
Logger.print_status(f"Create symlink for {client_config.config_filename} ...")
source = Path(client_config.config_dir, client_config.config_filename)
target = instance.base.cfg_dir
Logger.print_status(f"Linking {source} to {target}")
try:
create_symlink(source, target)
except Exception:
Logger.print_error("Creating symlink failed!")