feat: Add user feedback dialog for manual update checks and handle dialog closure

This commit is contained in:
claudi 2026-01-29 15:52:59 +01:00
parent e57e822bed
commit 64378f753b

View file

@ -195,6 +195,8 @@ class MainWindow(QMainWindow):
super().__init__(parent)
self.config = config
self._background_threads = [] # Keep references to background threads
self.checking_dialog = None # Track the checking dialog
self._is_manual_check = False # Track if this is a manual check (for UI feedback)
# Set window properties
self.setWindowTitle(f"{config.app_name} v{config.app_version}")
@ -398,12 +400,22 @@ class MainWindow(QMainWindow):
def _on_manual_check_for_updates(self) -> None:
"""Handle manual check for updates from menu.
Triggers an immediate update check (bypass cache).
Triggers an immediate update check (bypass cache) with user feedback dialog.
"""
logger.info("Manual update check requested from menu")
# Same as startup check, but user-initiated
# Show "Checking for Updates..." dialog
from webdrop_bridge.ui.update_manager_ui import CheckingDialog
self.checking_dialog = CheckingDialog(self)
self._is_manual_check = True
# Start the update check
self.check_for_updates_startup()
# Show the dialog
self.checking_dialog.show()
def _show_about_dialog(self) -> None:
"""Show About dialog with version and information."""
from PySide6.QtWidgets import QMessageBox
@ -495,6 +507,13 @@ class MainWindow(QMainWindow):
worker.finished.connect(worker.deleteLater)
thread.finished.connect(thread.deleteLater)
# Close checking dialog when finished
def close_checking_dialog():
if hasattr(self, 'checking_dialog') and self.checking_dialog:
self.checking_dialog.close()
worker.finished.connect(close_checking_dialog)
# Keep reference to thread to prevent garbage collection
self._background_threads.append(thread)
@ -521,6 +540,15 @@ class MainWindow(QMainWindow):
"""
self.set_update_status(status, emoji)
# If this is a manual check and we get the "Ready" status, it means no updates
if self._is_manual_check and status == "Ready":
# Show "No Updates Available" dialog
from webdrop_bridge.ui.update_manager_ui import NoUpdateDialog
dialog = NoUpdateDialog(parent=self)
self._is_manual_check = False
dialog.exec()
def _on_update_available(self, release) -> None:
"""Handle update available notification.