Revoke Wahoo tokens on disconnect; surface OAuth errors

Disconnecting a sync provider now calls the provider's revoke endpoint
(DELETE /v1/permissions for Wahoo) before dropping the local row, so
tokens don't accumulate against Wahoo's per-(app,user) cap. The token
exchange now classifies Wahoo's "Too many unrevoked access tokens" 400
as a distinct OAuthError code, and the connections settings page shows
a localized banner for that and other connect failures instead of a
silent ?error=sync_failed.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Ullrich Schäfer 2026-05-01 10:03:50 +02:00
parent d673860fb5
commit b60cd96736
No known key found for this signature in database
GPG key ID: A32FF691A0F752D9
8 changed files with 143 additions and 6 deletions

View file

@ -389,6 +389,12 @@ export default {
connect: "Verbinden",
disconnect: "Trennen",
connectedAs: "Verbunden (ID: {{id}})",
errors: {
too_many_tokens:
"Für diesen Dienst gibt es zu viele aktive Autorisierungen für dein Konto. Öffne die App des Anbieters, widerrufe dort die trails.cool-Autorisierung und versuche es dann erneut.",
sync_failed: "Verbindung fehlgeschlagen — der Anbieter hat die Anfrage abgelehnt. Bitte versuche es erneut.",
generic: "Verbindung fehlgeschlagen — der Anbieter hat die Anfrage abgelehnt. Bitte versuche es erneut.",
},
},
},
sync: {

View file

@ -389,6 +389,12 @@ export default {
connect: "Connect",
disconnect: "Disconnect",
connectedAs: "Connected (ID: {{id}})",
errors: {
too_many_tokens:
"This provider has too many active authorizations for your account. Open the provider's app, revoke the trails.cool authorization there, then try connecting again.",
sync_failed: "Couldn't connect — the provider rejected the request. Please try again.",
generic: "Couldn't connect — the provider rejected the request. Please try again.",
},
},
},
sync: {