You've already forked OneDriveGUI
mirror of
https://github.com/bpozdena/OneDriveGUI.git
synced 2026-10-24 04:59:17 +03:00
retry version checks when started offline
- client and GUI version lookups retry every 60 seconds, up to 10 attempts, before reporting failure - raise the GitHub request timeout from 1 to 3 seconds
This commit is contained in:
@@ -201,6 +201,13 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
"tooltip_text": "",
|
||||
}
|
||||
|
||||
# The GUI often starts before the network is up (autostart on login), so the
|
||||
# GitHub lookups are retried a few times before giving up.
|
||||
self.version_check_retry_interval = 60000
|
||||
self.version_check_max_attempts = 10
|
||||
self.client_version_check_attempts = 0
|
||||
self.gui_version_check_attempts = 0
|
||||
|
||||
self.refresh_process_status = QTimer()
|
||||
self.refresh_process_status.setSingleShot(False)
|
||||
self.refresh_process_status.timeout.connect(self.onedrive_process_status)
|
||||
@@ -336,7 +343,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
def get_latest_client_version():
|
||||
latest_url = "https://api.github.com/repos/abraunegg/onedrive/releases/latest"
|
||||
try:
|
||||
latest_client_version = s.get(latest_url, timeout=1).json()["tag_name"]
|
||||
latest_client_version = s.get(latest_url, timeout=3).json()["tag_name"]
|
||||
return latest_client_version
|
||||
|
||||
except Exception as e:
|
||||
@@ -372,8 +379,13 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
min_requirements_met = False
|
||||
|
||||
elif not latest_client_version:
|
||||
version_label_text = "Unable to check for latest OneDrive client version!"
|
||||
version_tooltip_text = "Unable to check for latest OneDrive client version!"
|
||||
self.client_version_check_attempts += 1
|
||||
if self.client_version_check_attempts < self.version_check_max_attempts:
|
||||
logging.warning(f"[GUI] Unable to check for latest OneDrive client version, retrying (attempt {self.client_version_check_attempts})")
|
||||
self.check_client_version.start(self.version_check_retry_interval)
|
||||
else:
|
||||
version_label_text = "Unable to check for latest OneDrive client version!"
|
||||
version_tooltip_text = "Unable to check for latest OneDrive client version!"
|
||||
|
||||
elif installed_client_version[1] < min_supported_version:
|
||||
version_label_text = (
|
||||
@@ -427,7 +439,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
"""Fetch latest GUI version from GitHub releases"""
|
||||
latest_url = "https://api.github.com/repos/bpozdena/OneDriveGUI/releases/latest"
|
||||
try:
|
||||
response = s.get(latest_url, timeout=1)
|
||||
response = s.get(latest_url, timeout=3)
|
||||
latest_gui_version = response.json()["tag_name"]
|
||||
return latest_gui_version
|
||||
except Exception as e:
|
||||
@@ -439,8 +451,11 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
installed_gui_version = version # From options.py
|
||||
|
||||
if not latest_gui_version:
|
||||
# Network issue or API error - don't show warning
|
||||
logging.warning("[GUI] Unable to check for latest OneDriveGUI version")
|
||||
# Network issue or API error, do not show a warning, retry later
|
||||
self.gui_version_check_attempts += 1
|
||||
if self.gui_version_check_attempts < self.version_check_max_attempts:
|
||||
self.check_gui_version.start(self.version_check_retry_interval)
|
||||
logging.warning(f"[GUI] Unable to check for latest OneDriveGUI version (attempt {self.gui_version_check_attempts})")
|
||||
return
|
||||
|
||||
# Parse versions for comparison
|
||||
|
||||
Reference in New Issue
Block a user