refactor reinit

should fix an issue when the user presses retry before the websocket fully disconnects
This commit is contained in:
alfrix
2024-05-13 10:07:56 -03:00
parent 19c083b286
commit 7dd62decaf
4 changed files with 17 additions and 6 deletions

View File

@@ -32,7 +32,6 @@ class KlippyWebsocket(threading.Thread):
self.port = port
self.header = {"x-api-key": api_key} if api_key else {}
self.api_key = api_key
self.reconnect_count = 0
@property
def _url(self):

View File

@@ -13,6 +13,12 @@ class KlippyFiles:
self.directories = []
self.gcodes_path = None
def reinit(self):
self.callbacks.clear()
self.files.clear()
self.directories.clear()
self.gcodes_path = None
def set_gcodes_path(self):
virtual_sdcard = self._screen.printer.get_config_section("virtual_sdcard")
if virtual_sdcard and "path" in virtual_sdcard:

View File

@@ -124,6 +124,7 @@ class Panel(ScreenPanel):
self._screen._ws.klippy.restart()
def retry(self, widget):
logging.debug("User retrying connection")
self._screen.connect_printer(self._screen.connecting_to_printer)
self.show_restart_buttons()

View File

@@ -203,10 +203,10 @@ class KlipperScreen(Gtk.Window):
def connect_printer(self, name):
self.connecting_to_printer = name
if self.files:
self.files.__init__(self)
if self._ws is not None and self._ws.connected:
self.printer_initializing("Waiting Websocket closure")
self.close_websocket()
return
gc.collect()
self.connecting = True
self.initialized = False
@@ -239,6 +239,8 @@ class KlipperScreen(Gtk.Window):
)
if self.files is None:
self.files = KlippyFiles(self)
else:
self.files.reinit()
self.reinit_count = 0
self.printer_initializing(_("Connecting to %s") % name, True)
@@ -919,9 +921,12 @@ class KlipperScreen(Gtk.Window):
return False
self.server_info = self.apiclient.get_server_info()
if not self.server_info:
logging.info("Moonraker not connected")
logging.info("Cannot get server info")
if self.reinit_count > 0:
self._init_printer(_("Cannot connect to Moonraker") + "\n\n"
+ _("Retrying") + f" #{self.reinit_count}")
else:
self._init_printer(_("Connecting to %s") % self.connecting_to_printer)
self.initializing = False
self.reinit_count += 1
return False