From 70a624c33188b70e5e861c156a62070214367ad7 Mon Sep 17 00:00:00 2001 From: Miguel Jacq Date: Tue, 23 Jan 2018 16:32:14 +1100 Subject: [PATCH] #535 do the forced update check via a (non-blocking) QThread --- onionshare_gui/settings_dialog.py | 41 +++++++++++++++++-------------- onionshare_gui/update_checker.py | 5 ++-- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/onionshare_gui/settings_dialog.py b/onionshare_gui/settings_dialog.py index 18372a47..eb109e76 100644 --- a/onionshare_gui/settings_dialog.py +++ b/onionshare_gui/settings_dialog.py @@ -557,31 +557,34 @@ class SettingsDialog(QtWidgets.QDialog): self._disable_buttons() self.qtapp.processEvents() + def update_timestamp(): + # Update the last checked label + settings = Settings(self.config) + settings.load() + 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)) + forced_update_thread.quit() + # Enable buttons + self._enable_buttons() + # Update timestamp + update_timestamp() + def update_not_available(): Alert(strings._('update_not_available', True)) + forced_update_thread.quit() + # Enable buttons + self._enable_buttons() + # Update timestamp + update_timestamp() - u = UpdateChecker(self.onion) - u.update_available.connect(update_available) - u.update_not_available.connect(update_not_available) - - try: - u.check(force=True) - except UpdateCheckerCheckError: - Alert(strings._('update_error_check_error', True), QtWidgets.QMessageBox.Warning) - except UpdateCheckerInvalidLatestVersion as e: - Alert(strings._('update_error_invalid_latest_version', True).format(e.latest_version), QtWidgets.QMessageBox.Warning) - - # Enable buttons - self._enable_buttons() - - # Update the last checked label - settings = Settings(self.config) - settings.load() - autoupdate_timestamp = settings.get('autoupdate_timestamp') - self._update_autoupdate_timestamp(autoupdate_timestamp) + 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.start() def save_clicked(self): """ diff --git a/onionshare_gui/update_checker.py b/onionshare_gui/update_checker.py index ca2eb48a..c00b36b9 100644 --- a/onionshare_gui/update_checker.py +++ b/onionshare_gui/update_checker.py @@ -149,11 +149,12 @@ class UpdateThread(QtCore.QThread): update_available = QtCore.pyqtSignal(str, str, str) update_not_available = QtCore.pyqtSignal() - def __init__(self, onion, config=False): + def __init__(self, onion, config=False, force=False): super(UpdateThread, self).__init__() common.log('UpdateThread', '__init__') self.onion = onion self.config = config + self.force = force def run(self): common.log('UpdateThread', 'run') @@ -163,7 +164,7 @@ class UpdateThread(QtCore.QThread): u.update_not_available.connect(self._update_not_available) try: - u.check(config=self.config) + u.check(config=self.config,force=self.force) except Exception as e: # If update check fails, silently ignore common.log('UpdateThread', 'run', '{}'.format(e))