MCPcopy Index your code
hub / github.com/CapSoftware/Cap / startDeepLinkSession

Function startDeepLinkSession

apps/desktop/src/utils/auth.ts:173–204  ·  view source on GitHub ↗
(signal: AbortSignal)

Source from the content-addressed store, hash-verified

171}
172
173async function startDeepLinkSession(signal: AbortSignal) {
174 let settled = false;
175 let stopListening: (() => void) | undefined;
176 let resolvePromise: (data: AuthParams | null) => void = () => {};
177
178 const complete = new Promise<AuthParams | null>((resolve) => {
179 resolvePromise = resolve;
180 });
181
182 const settle = (value: AuthParams | null) => {
183 if (settled) return;
184 settled = true;
185 resolvePromise(value);
186 };
187
188 stopListening = await onOpenUrl(async (urls) => {
189 for (const urlString of urls) {
190 if (signal.aborted) return;
191 settle(parseAuthParams(new URL(urlString)));
192 }
193 });
194
195 const dispose = async () => {
196 stopListening?.();
197 stopListening = undefined;
198 settle(null);
199 };
200
201 signal.addEventListener("abort", () => void dispose(), { once: true });
202
203 return { complete, dispose };
204}
205
206function parseAuthParams(url: URL) {
207 return paramsValidator.parse(

Callers 1

Calls 4

parseAuthParamsFunction · 0.85
disposeFunction · 0.85
addEventListenerMethod · 0.80
settleFunction · 0.70

Tested by

no test coverage detected