Files
com.wisp.app/app
Barry Deen b999aebd42 fix(auth): refresh stale Drive access token on 401 and re-prompt for consent
After a user revokes Wisp's authorization in their Google account
settings, Play Services may still hand back the previously-issued
access token from its local cache. The Drive API then 401s and sign-in
fails with no way for the user to recover from inside the app.

Detect the 401, clear the stale token from Play Services' cache via
GoogleAuthUtil.clearToken, and re-call AuthorizationClient.authorize().
With no cached token, authorize() contacts Google's servers, sees the
revoked consent, and returns a resolution PendingIntent — surfacing the
consent dialog so the user can re-grant the drive.appdata scope. Once
they consent, we retry listBackups with the fresh token.

  - DriveBackupService throws DriveAuthorizationExpiredException on 401
    (instead of a generic IOException) and exposes the stale token so
    callers can pass it to clearToken
  - GoogleSignInManager.refreshDriveAccessToken(activity, staleToken):
    clears via GoogleAuthUtil and re-runs getDriveAccessToken (which
    handles the resolution PendingIntent the same way as initial
    sign-in)
  - GoogleAuthViewModel.listBackupsWithRefresh wraps the initial list
    call with a single retry on the expired-auth exception
2026-05-15 15:28:34 -04:00
..