From 66909b668bc2dc22ec68551e61322016670725c1 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Sat, 25 Apr 2026 00:24:13 +0900 Subject: [PATCH] fix: duplicate records in saved servers --- dzgui/model/servers.py | 15 +++++---------- dzgui/views/components/right_panel.py | 3 +-- dzgui/views/pages/servers.py | 4 +++- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/dzgui/model/servers.py b/dzgui/model/servers.py index cf0cfa2..baaa65e 100644 --- a/dzgui/model/servers.py +++ b/dzgui/model/servers.py @@ -240,6 +240,7 @@ class ServerModelManager: proxy_man.update_playercount(self.playercount) def _parse_single_record(self, response: dict, delete: bool = False) -> None: + self.preserve_on_fail = True if response is None: self.thread_man.set_cleanup_func(StoredFunc(self._cleanup_on_failure)) return @@ -264,17 +265,12 @@ class ServerModelManager: proxy_man.remove_row_from_control(record) else: if config_man.is_in_favs(fqip): - self.thread_man.set_cleanup_func( - StoredFunc(self._cleanup_when_no_model) - ) return config_man.add_saved_server(fqip) if proxy_man.has_control_model() is False: - self.thread_man.set_cleanup_func( - StoredFunc(self._cleanup_when_no_model) - ) - return - proxy_man.append_row_to_control(record) + self._get_proxy_man().push(records) + else: + proxy_man.append_row_to_control(record) control_model = proxy_man.get_control() self._sort_unique_maps(control_model) @@ -359,8 +355,7 @@ class ServerModelManager: # TODO: disable map, keyword, and filter widgets if model is None # -> signal driven (servers_empty, servers_failed_to_load) - # NOTE: used by refresh button action - if not self.preserve_on_fail: + if self.preserve_on_fail is False: self.tv.set_model(None) filter_man = self.tv.get_filter_man() filter_man.set_unique_maps(None) diff --git a/dzgui/views/components/right_panel.py b/dzgui/views/components/right_panel.py index e9602cb..73610cb 100644 --- a/dzgui/views/components/right_panel.py +++ b/dzgui/views/components/right_panel.py @@ -69,8 +69,7 @@ class RightPanel(Gtk.Box): def _on_servers_loaded(self, emitter: "Emitter", context: "ServerTab") -> None: # TODO: similar logic on notebook page change state = self.controller.has_server_model() - for widget in self.filters_vbox: - widget.set_sensitive(state) + self.filters_vbox.set_sensitive(state) def _on_version_clicked(self, widget: Gtk.EventBox, event: Gdk.EventButton) -> None: def revert() -> GLib.SOURCE_REMOVE: diff --git a/dzgui/views/pages/servers.py b/dzgui/views/pages/servers.py index 0b632f9..92da14d 100644 --- a/dzgui/views/pages/servers.py +++ b/dzgui/views/pages/servers.py @@ -69,8 +69,10 @@ class ServerNotebook(Gtk.ScrolledWindow): self.emitter.connect("saved_servers_changed", self._on_saved_servers_changed) def _on_saved_servers_changed(self, emitter: "Emitter") -> None: + # TODO: can be dropped/consolidated? saved = 1 - if self.notebook.get_current_page() == saved: + cur_page = self.notebook.get_current_page() + if cur_page == saved: return page = self.notebook.get_nth_page(saved) label = self.notebook.get_tab_label(page)