fix: Google-Token-Fehler wird sichtbar gemacht und dem User gemeldet

Wenn der Access-Token eines Google-Accounts abläuft und der Refresh
fehlschlägt, wurde die leere Terminliste bisher still zurückgegeben
(kein Log, keine UI-Meldung). Jetzt wird der Fehler geloggt, an den
Aufrufer weitergegeben und als Toast-Meldung im Frontend angezeigt
("Token abgelaufen – bitte Konto trennen und neu verbinden").
Das Events-Endpoint gibt nun {events, errors} statt ein reines Array
zurück; das Frontend extrahiert die Events entsprechend.
This commit is contained in:
Scarriffle
2026-04-08 21:40:01 +02:00
parent 804d6ac9eb
commit 240b7af1c8
3 changed files with 15 additions and 6 deletions

View File

@@ -347,13 +347,15 @@ def get_events(
.filter(models.GoogleAccount.user_id == current_user.id)
.all()
)
google_errors = []
for g_acc in google_accounts:
try:
all_events.extend(get_google_events(g_acc, start_dt, end_dt, db))
except Exception as exc:
logger.error("Error fetching Google Calendar for %s: %s", g_acc.email, exc)
google_errors.append({"email": g_acc.email})
return all_events
return {"events": all_events, "errors": google_errors}
@router.post("/events")

View File

@@ -373,8 +373,9 @@ def get_google_events(account: models.GoogleAccount, start_dt: datetime, end_dt:
"""Fetch events from all enabled Google calendars for an account."""
try:
token = _refresh_access_token(account, db)
except Exception:
return []
except Exception as exc:
logger.error("Token refresh failed for Google account %s: %s", account.email, exc)
raise
all_events = []
try: