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:
Hermes Agent
2026-09-18 10:24:23 +02:00
parent fa7b037e7f
commit 05e6515011
3 changed files with 9 additions and 7 deletions
+2 -5
View File
@@ -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
+6 -1
View File
@@ -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()
+1 -1
View File
@@ -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: