(result: OAuthPopupResult<TPayload>)
| 252 | sessionRef.current = { state: response.state }; |
| 253 | input.onAuthorizationStarted?.(response); |
| 254 | const handleResult = async (result: OAuthPopupResult<TPayload>) => { |
| 255 | cleanupRef.current = null; |
| 256 | sessionRef.current = null; |
| 257 | |
| 258 | if (!result.ok) { |
| 259 | trackEvent("oauth_completed", { success: false }); |
| 260 | setBusy(false); |
| 261 | setError(result.error); |
| 262 | input.onError?.(result.error, result.errorDetails); |
| 263 | return; |
| 264 | } |
| 265 | |
| 266 | const refreshExit = await doOAuthConnectionCompleted({ |
| 267 | reactivityKeys: connectionWriteKeys, |
| 268 | }); |
| 269 | if (Exit.isFailure(refreshExit)) { |
| 270 | const message = messageFromExit(refreshExit, "Failed to refresh connection"); |
| 271 | reportHandledError(refreshExit.cause, { |
| 272 | surface: "oauth", |
| 273 | action: "refresh_connection", |
| 274 | message, |
| 275 | metadata: input.reportMetadata, |
| 276 | }); |
| 277 | trackEvent("oauth_completed", { success: false }); |
| 278 | setBusy(false); |
| 279 | setError(message); |
| 280 | input.onError?.(message); |
| 281 | return; |
| 282 | } |
| 283 | |
| 284 | const persistenceError = await Promise.resolve(input.onSuccess(result)).then( |
| 285 | () => null, |
| 286 | (cause: unknown) => cause, |
| 287 | ); |
| 288 | if (persistenceError !== null) { |
| 289 | const message = messageFromUnknown(persistenceError, "Failed to save connection"); |
| 290 | reportHandledError(persistenceError, { |
| 291 | surface: "oauth", |
| 292 | action: "persist_connection", |
| 293 | message, |
| 294 | metadata: input.reportMetadata, |
| 295 | }); |
| 296 | trackEvent("oauth_completed", { success: false }); |
| 297 | setBusy(false); |
| 298 | setError(message); |
| 299 | input.onError?.(message); |
| 300 | return; |
| 301 | } |
| 302 | trackEvent("oauth_completed", { success: true }); |
| 303 | setBusy(false); |
| 304 | }; |
| 305 | const handleClosed = () => { |
| 306 | cleanupRef.current = null; |
| 307 | sessionRef.current = null; |
no test coverage detected