fix(auth): lire p.credential sur les objets Profile; sortie propre via Event (plus de SystemExit dans le callback pystray)
This commit is contained in:
@@ -72,12 +72,9 @@ def run_tray(store: ConfigStore) -> int:
|
||||
app.start()
|
||||
|
||||
# Maintient le processus en vie ; pystray run() tourne déjà dans un thread.
|
||||
# On attend l'arrêt déclenché par l'élément « Quitter » (via un Event).
|
||||
try:
|
||||
# Boucle événementielle tant que l'application n'est pas arrêtée.
|
||||
while True:
|
||||
import time
|
||||
|
||||
time.sleep(3600)
|
||||
app.wait()
|
||||
except KeyboardInterrupt:
|
||||
app.stop()
|
||||
return 0
|
||||
|
||||
@@ -48,6 +48,7 @@ class TrayApp:
|
||||
self._icon_thread: threading.Thread | None = None
|
||||
self._icon_factory = icon_factory
|
||||
self._menu_factory = menu_factory
|
||||
self._exit_event = threading.Event()
|
||||
|
||||
# -- fenêtre racine cachée (pour les dialogues) --------------------------
|
||||
|
||||
@@ -173,4 +174,8 @@ class TrayApp:
|
||||
self._icon.stop()
|
||||
except Exception:
|
||||
pass
|
||||
raise SystemExit(0)
|
||||
self._exit_event.set()
|
||||
|
||||
def wait(self) -> None:
|
||||
"""Blocage jusqu'à ce que l'application soit arrêtée (élément « Quitter »)."""
|
||||
self._exit_event.wait()
|
||||
@@ -84,7 +84,7 @@ class AuthDialog(tk.Toplevel):
|
||||
# typiques et on laisse l'utilisateur vérifier leur existence.
|
||||
known = sorted(
|
||||
set(self._known)
|
||||
| {p.get("credential", "") for p in self._known_profiles()}
|
||||
| {p.credential for p in self._known_profiles() if p.credential}
|
||||
)
|
||||
known = [k for k in known if k]
|
||||
for k in known:
|
||||
|
||||
Reference in New Issue
Block a user