(signal: AbortSignal)
| 93 | } |
| 94 | |
| 95 | async function createHybridDesktopSession(signal: AbortSignal) { |
| 96 | const deepLink = await startDeepLinkSession(signal); |
| 97 | const localCallback = await startLocalCallbackSession(signal); |
| 98 | |
| 99 | return { |
| 100 | url: await createSessionRequestUrl(localCallback.port, "desktop"), |
| 101 | complete: async () => { |
| 102 | const result = await Promise.race([ |
| 103 | deepLink.complete.then((data) => ({ |
| 104 | source: "deep-link" as const, |
| 105 | data, |
| 106 | })), |
| 107 | localCallback.complete.then((data) => ({ |
| 108 | source: "local" as const, |
| 109 | data, |
| 110 | })), |
| 111 | ]); |
| 112 | |
| 113 | await deepLink.dispose(); |
| 114 | await localCallback.dispose(); |
| 115 | |
| 116 | if (!result.data) return null; |
| 117 | if (signal.aborted) throw new Error("Sign in aborted"); |
| 118 | |
| 119 | return result.data; |
| 120 | }, |
| 121 | }; |
| 122 | } |
| 123 | |
| 124 | async function startLocalCallbackSession(signal: AbortSignal) { |
| 125 | await invoke("plugin:oauth|stop").catch(() => {}); |
no test coverage detected