From 3d33d4f1e0e8feb9ee31396e2ffab646cb91422b Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Mon, 27 Apr 2026 00:00:14 +0900 Subject: [PATCH] chore: move method into config manager --- dzgui/controllers/mc.py | 19 ++++--------------- dzgui/managers/config.py | 22 +++++++++++++++++++++- dzgui/views/pages/options.py | 3 ++- 3 files changed, 27 insertions(+), 17 deletions(-) diff --git a/dzgui/controllers/mc.py b/dzgui/controllers/mc.py index 69a6454..a63166c 100644 --- a/dzgui/controllers/mc.py +++ b/dzgui/controllers/mc.py @@ -150,7 +150,7 @@ class Controller(GObject.GObject): return self.prefs def set_prefs(self, prefs: UserPrefs) -> None: - self.config_man = ConfigManager(prefs) + self.config_man = ConfigManager(prefs, self) self.notes_man = NoteManager(self, prefs.paths.notes) self.prefs = prefs @@ -404,6 +404,7 @@ class Controller(GObject.GObject): def get_mod_store(self) -> Gtk.ListStore: return self.mediator.modtreeview.get_model() + # TODO: delegate to configman def set_fav(self) -> None: treeview = self.get_active_treeview() name = treeview.get_value_at_index(0) @@ -456,20 +457,8 @@ class Controller(GObject.GObject): dialog = ExceptionDialog(self, str(e)) dialog.run() - # TODO: move to ConfigMan - @call_on_thread(strings.dialog.working) - def update_api_key(self, text: str, key: Preferences) -> None: - if key is Preferences.STEAM: - res = test_steam_api(text) - else: - res = test_bm_api(text) - - if res is True: - self.update_config(key, text) - else: - self.cleanup_func = StoredFunc( - lambda: self.emitter.emit("api_change_failed") - ) + def update_api_key(self, key: Preferences, text: str) -> None: + self.config_man.update_api_key(key, text) def set_resolution(self, window: "OuterWindow") -> None: self.config_man.set_resolution(window) diff --git a/dzgui/managers/config.py b/dzgui/managers/config.py index 98f38df..7437391 100644 --- a/dzgui/managers/config.py +++ b/dzgui/managers/config.py @@ -10,7 +10,9 @@ from dzgui.const.constants import ( WINDOW_DEFAULT_X, WINDOW_DEFAULT_Y, ) +from dzgui.api.probe import test_steam_api, test_bm_api from dzgui.const.enum import Preferences +from dzgui.managers.threading import call_on_thread, StoredFunc, ThreadingManager from dzgui.views.dialogs.generic import ExceptionDialog from dzgui.util._json import read_json, write_json @@ -22,6 +24,7 @@ from gi.repository.Gtk import main_quit # noqa E402 # import dzgui.api.servers as Servers if TYPE_CHECKING: from dzgui.config.userprefs import UserPrefs + from dzgui.controllers.mc import Controller from dzgui.views.base import OuterWindow from dzgui.views.trees.tree_servers import ServerTreeView @@ -29,9 +32,11 @@ logger = logging.getLogger(__name__) class ConfigManager: - def __init__(self, prefs: "UserPrefs") -> None: + def __init__(self, prefs: "UserPrefs", controller: "Controller") -> None: self.prefs = prefs self.config = prefs.paths.config + self.emitter = controller.get_emitter() + self.thread_man = ThreadingManager(controller) def lookup(self, enum: Preferences) -> Any: key = self.enum_to_key(enum) @@ -73,6 +78,21 @@ class ConfigManager: logger.critical(e) raise e + # TODO: strings + @call_on_thread("checking api") + def update_api_key(self, key: Preferences, text: str) -> None: + if key is Preferences.STEAM: + res = test_steam_api(text) + else: + res = test_bm_api(text) + if res is True: + self.update_config(key, text) + else: + self.thread_man.set_cleanup_func(StoredFunc( + lambda: self.emitter.emit("api_change_failed") + )) + return + def get_favorites(self) -> list[str]: return self.lookup(Preferences.IP_LIST) diff --git a/dzgui/views/pages/options.py b/dzgui/views/pages/options.py index 4214233..1196d25 100644 --- a/dzgui/views/pages/options.py +++ b/dzgui/views/pages/options.py @@ -281,10 +281,11 @@ class Options(Gtk.Box): self.controller.update_config(enum, value) case Preferences.BM | Preferences.STEAM: text = "".join(entry.get_text().split()) - self.controller.update_api_key(text, enum) + self.controller.update_api_key(enum, text) def _on_api_change_failed(self, emitter: "Emitter") -> None: self.old_entry.set_text(self.old_text) + # FIXME: ambiguous error message dialog = ExceptionDialog(self.controller, strings.api_error) dialog.run()