From cd5e6e1f6bd9cc613eb1eb345030722f589e7b1e Mon Sep 17 00:00:00 2001 From: benya Date: Sun, 15 Feb 2026 23:59:57 +0300 Subject: [PATCH] fix(update): prevent repeated check crash and bump to 2.2.2 --- app_version.py | 2 +- main.py | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app_version.py b/app_version.py index 773702f..1526fdd 100644 --- a/app_version.py +++ b/app_version.py @@ -1 +1 @@ -APP_VERSION = "2.2.1" +APP_VERSION = "2.2.2" diff --git a/main.py b/main.py index 3379531..140747c 100644 --- a/main.py +++ b/main.py @@ -171,6 +171,7 @@ class VkChatManager(QMainWindow): self.update_channel = UPDATE_CHANNEL_DEFAULT self.update_checker = None self.update_thread = None + self._update_in_progress = False self._update_check_silent = False self._bulk_worker_thread = None self._bulk_worker = None @@ -462,10 +463,11 @@ class VkChatManager(QMainWindow): self._log_event("update_channel", f"update_channel={self.update_channel}") def check_for_updates(self, silent_no_updates=False): - if self.update_thread and self.update_thread.isRunning(): + if self._update_in_progress: return self._update_check_silent = silent_no_updates + self._update_in_progress = True self._set_update_action_state(True) channel_label = "бета" if self.update_channel == "beta" else "релизы" self.status_label.setText(f"Статус: проверка обновлений ({channel_label})...") @@ -485,13 +487,12 @@ class VkChatManager(QMainWindow): self.update_checker.check_failed.connect(self.update_thread.quit) self.update_checker.check_finished.connect(self.update_checker.deleteLater) self.update_checker.check_failed.connect(self.update_checker.deleteLater) + self.update_thread.finished.connect(self._on_update_thread_finished) self.update_thread.finished.connect(self.update_thread.deleteLater) self.update_thread.start() def _on_update_check_finished(self, result): self._set_update_action_state(False) - self.update_checker = None - self.update_thread = None if result.get("has_update"): latest_version = result.get("latest_version") or result.get("latest_tag") or "unknown" @@ -552,8 +553,6 @@ class VkChatManager(QMainWindow): def _on_update_check_failed(self, error_text): self._set_update_action_state(False) - self.update_checker = None - self.update_thread = None self._log_event("update_check_failed", error_text, level="WARN") if not self.update_repository_url: self.status_label.setText("Статус: обновления не настроены (URL репозитория не задан).") @@ -570,6 +569,11 @@ class VkChatManager(QMainWindow): if not self._update_check_silent: QMessageBox.warning(self, "Проверка обновлений", error_text) + def _on_update_thread_finished(self): + self._update_in_progress = False + self.update_checker = None + self.update_thread = None + def setup_token_timer(self): self.token_countdown_timer = QTimer(self) self.token_countdown_timer.timeout.connect(self.update_token_timer_display)