mirror of
https://github.com/binaricat/Netcatty.git
synced 2026-10-09 15:58:34 +00:00
2a75f863f8
* fix: reset cloud sync connect button when OAuth popup is closed When users close the OAuth popup without completing authorization, the connect button was stuck in "Connecting" state indefinitely (up to 5-minute timeout). Changes: - Track OAuth popup window and poll for closure (Google, OneDrive) - Cancel OAuth callback server when popup is closed, immediately rejecting the pending promise instead of waiting for timeout - Reset provider status via disconnectProvider on auth failure so the connect button returns to clickable state - Suppress toast for user-initiated cancellation (popup closed) - Also reset GitHub provider status on device flow failure Closes #542 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: use resetProviderStatus instead of disconnectProvider on auth failure disconnectProvider tears down existing connections (signOut, delete adapter, clear merge base). If a user was re-authenticating and cancelled, this would destroy their working connection. Add resetProviderStatus() that only resets the UI status to 'disconnected' without any teardown side effects. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: add resetProviderStatus to CloudSyncHook interface Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: remove noreferrer from OAuth popup to enable window tracking noreferrer implies noopener in browser spec, causing window.open() to return null and defeating the popup closure detection entirely. Safe to remove since OAuth targets are trusted providers (Google, Microsoft) and the Referer is just a localhost URL. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: guard resetProviderStatus and cancel delayed popup on early failure - resetProviderStatus only resets if status is 'connecting', preserving already-authenticated providers when sync initialization fails - Cancel the delayed setTimeout for window.open if callbackPromise rejects before 100ms, preventing a stray popup and leaking interval Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: reset GitHub provider status when device flow modal is closed The modal onClose only hid the modal and stopped the polling flag, but the provider status stayed at 'connecting'. Now calls resetProviderStatus('github') so the button returns to clickable. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>