From a28f427c0c9f90541db5de49e5a87f09260cd0c8 Mon Sep 17 00:00:00 2001 From: Miguel Jacq Date: Tue, 23 Jan 2018 16:51:13 +1100 Subject: [PATCH] reinstate the emitted signals for invalid version/error checking for updates --- onionshare_gui/settings_dialog.py | 25 +++++++++++++++++-------- onionshare_gui/update_checker.py | 18 ++++++++++++++++++ 2 files changed, 35 insertions(+), 8 deletions(-) diff --git a/onionshare_gui/settings_dialog.py b/onionshare_gui/settings_dialog.py index eb109e76..2b68b19f 100644 --- a/onionshare_gui/settings_dialog.py +++ b/onionshare_gui/settings_dialog.py @@ -564,26 +564,35 @@ class SettingsDialog(QtWidgets.QDialog): autoupdate_timestamp = settings.get('autoupdate_timestamp') self._update_autoupdate_timestamp(autoupdate_timestamp) - # Check for updates - def update_available(update_url, installed_version, latest_version): - Alert(strings._("update_available", True).format(update_url, installed_version, latest_version)) + def close_forced_update_thread(): forced_update_thread.quit() # Enable buttons self._enable_buttons() # Update timestamp update_timestamp() + # Check for updates + def update_available(update_url, installed_version, latest_version): + Alert(strings._("update_available", True).format(update_url, installed_version, latest_version)) + close_forced_update_thread() + def update_not_available(): Alert(strings._('update_not_available', True)) - forced_update_thread.quit() - # Enable buttons - self._enable_buttons() - # Update timestamp - update_timestamp() + close_forced_update_thread() + + def update_error(): + Alert(strings._('update_error_check_error', True), QtWidgets.QMessageBox.Warning) + close_forced_update_thread() + + def update_invalid_version(): + Alert(strings._('update_error_invalid_latest_version', True).format(e.latest_version), QtWidgets.QMessageBox.Warning) + close_forced_update_thread() forced_update_thread = UpdateThread(self.onion, self.config, force=True) forced_update_thread.update_available.connect(update_available) forced_update_thread.update_not_available.connect(update_not_available) + forced_update_thread.update_error.connect(update_error) + forced_update_thread.update_invalid_version.connect(update_invalid_version) forced_update_thread.start() def save_clicked(self): diff --git a/onionshare_gui/update_checker.py b/onionshare_gui/update_checker.py index c00b36b9..16d8b8f5 100644 --- a/onionshare_gui/update_checker.py +++ b/onionshare_gui/update_checker.py @@ -51,6 +51,8 @@ class UpdateChecker(QtCore.QObject): """ update_available = QtCore.pyqtSignal(str, str, str) update_not_available = QtCore.pyqtSignal() + update_error = QtCore.pyqtSignal() + update_invalid_version = QtCore.pyqtSignal() def __init__(self, onion, config=False): super(UpdateChecker, self).__init__() @@ -120,12 +122,14 @@ class UpdateChecker(QtCore.QObject): except Exception as e: common.log('UpdateChecker', 'check', '{}'.format(e)) + self.update_error.emit() raise UpdateCheckerCheckError # Validate that latest_version looks like a version string # This regex is: 1-3 dot-separated numeric components version_re = r"^(\d+\.)?(\d+\.)?(\d+)$" if not re.match(version_re, latest_version): + self.update_invalid_version.emit() raise UpdateCheckerInvalidLatestVersion(latest_version) # Update the last checked timestamp (dropping the seconds and milliseconds) @@ -148,6 +152,8 @@ class UpdateChecker(QtCore.QObject): class UpdateThread(QtCore.QThread): update_available = QtCore.pyqtSignal(str, str, str) update_not_available = QtCore.pyqtSignal() + update_error = QtCore.pyqtSignal() + update_invalid_version = QtCore.pyqtSignal() def __init__(self, onion, config=False, force=False): super(UpdateThread, self).__init__() @@ -162,6 +168,8 @@ class UpdateThread(QtCore.QThread): u = UpdateChecker(self.onion, self.config) u.update_available.connect(self._update_available) u.update_not_available.connect(self._update_not_available) + u.update_error.connect(self._update_error) + u.update_invalid_version.connect(self._update_invalid_version) try: u.check(config=self.config,force=self.force) @@ -179,3 +187,13 @@ class UpdateThread(QtCore.QThread): common.log('UpdateThread', '_update_not_available') self.active = False self.update_not_available.emit() + + def _update_error(self): + common.log('UpdateThread', '_update_error') + self.active = False + self.update_error.emit() + + def _update_invalid_version(self): + common.log('UpdateThread', '_update_invalid_version') + self.active = False + self.update_invalid_version.emit()