- Add guard flag to prevent both onPopInvokedWithResult and dispose()
from saving progress (double DB writes + double sync pushes)
- Capture ref-dependent values synchronously in _saveProgress before
any await to prevent accessing disposed ref after super.dispose()
- Guard ref.invalidate() calls with mounted check for dispose safety
- Add KoreaderSyncAuthException so 401 errors in getProgress and
updateProgress propagate instead of being silently swallowed
- Show a warning snackbar (once per session) when auth fails so the
user knows sync credentials need updating
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>