1 Commits

Author SHA1 Message Date
cd5e6e1f6b fix(update): prevent repeated check crash and bump to 2.2.2
All checks were successful
Desktop CI / tests (push) Successful in 15s
Desktop Release / release (push) Successful in 3m30s
2026-02-15 23:59:57 +03:00
2 changed files with 10 additions and 6 deletions

View File

@@ -1 +1 @@
APP_VERSION = "2.2.1" APP_VERSION = "2.2.2"

14
main.py
View File

@@ -171,6 +171,7 @@ class VkChatManager(QMainWindow):
self.update_channel = UPDATE_CHANNEL_DEFAULT self.update_channel = UPDATE_CHANNEL_DEFAULT
self.update_checker = None self.update_checker = None
self.update_thread = None self.update_thread = None
self._update_in_progress = False
self._update_check_silent = False self._update_check_silent = False
self._bulk_worker_thread = None self._bulk_worker_thread = None
self._bulk_worker = None self._bulk_worker = None
@@ -462,10 +463,11 @@ class VkChatManager(QMainWindow):
self._log_event("update_channel", f"update_channel={self.update_channel}") self._log_event("update_channel", f"update_channel={self.update_channel}")
def check_for_updates(self, silent_no_updates=False): def check_for_updates(self, silent_no_updates=False):
if self.update_thread and self.update_thread.isRunning(): if self._update_in_progress:
return return
self._update_check_silent = silent_no_updates self._update_check_silent = silent_no_updates
self._update_in_progress = True
self._set_update_action_state(True) self._set_update_action_state(True)
channel_label = "бета" if self.update_channel == "beta" else "релизы" channel_label = "бета" if self.update_channel == "beta" else "релизы"
self.status_label.setText(f"Статус: проверка обновлений ({channel_label})...") 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_failed.connect(self.update_thread.quit)
self.update_checker.check_finished.connect(self.update_checker.deleteLater) self.update_checker.check_finished.connect(self.update_checker.deleteLater)
self.update_checker.check_failed.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.finished.connect(self.update_thread.deleteLater)
self.update_thread.start() self.update_thread.start()
def _on_update_check_finished(self, result): def _on_update_check_finished(self, result):
self._set_update_action_state(False) self._set_update_action_state(False)
self.update_checker = None
self.update_thread = None
if result.get("has_update"): if result.get("has_update"):
latest_version = result.get("latest_version") or result.get("latest_tag") or "unknown" 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): def _on_update_check_failed(self, error_text):
self._set_update_action_state(False) self._set_update_action_state(False)
self.update_checker = None
self.update_thread = None
self._log_event("update_check_failed", error_text, level="WARN") self._log_event("update_check_failed", error_text, level="WARN")
if not self.update_repository_url: if not self.update_repository_url:
self.status_label.setText("Статус: обновления не настроены (URL репозитория не задан).") self.status_label.setText("Статус: обновления не настроены (URL репозитория не задан).")
@@ -570,6 +569,11 @@ class VkChatManager(QMainWindow):
if not self._update_check_silent: if not self._update_check_silent:
QMessageBox.warning(self, "Проверка обновлений", error_text) 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): def setup_token_timer(self):
self.token_countdown_timer = QTimer(self) self.token_countdown_timer = QTimer(self)
self.token_countdown_timer.timeout.connect(self.update_token_timer_display) self.token_countdown_timer.timeout.connect(self.update_token_timer_display)