diff --git a/apps/desktop/src/app/app.component.ts b/apps/desktop/src/app/app.component.ts index c7b140dd1fc..afc37005df4 100644 --- a/apps/desktop/src/app/app.component.ts +++ b/apps/desktop/src/app/app.component.ts @@ -444,6 +444,9 @@ export class AppComponent implements OnInit, OnDestroy { case "redrawMenu": await this.updateAppMenu(); break; + case "deepLink": + this.processDeepLink(message.urlString); + break; } }); }); @@ -744,4 +747,30 @@ export class AppComponent implements OnInit, OnDestroy { private isAccountCleanUpInProgress(userId: string): boolean { return this.accountCleanUpInProgress[userId] === true; } + + // Process the sso callback links + private processDeepLink(urlString: string) { + const url = new URL(urlString); + const code = url.searchParams.get("code"); + const receivedState = url.searchParams.get("state"); + let message = ""; + + if (code === null) { + return; + } + + if (urlString.indexOf("bitwarden://duo-callback") === 0) { + message = "duoCallback"; + } else if (receivedState === null) { + return; + } + + if (urlString.indexOf("bitwarden://import-callback-lp") === 0) { + message = "importCallbackLastPass"; + } else if (urlString.indexOf("bitwarden://sso-callback") === 0) { + message = "ssoCallback"; + } + + this.messagingService.send(message, { code: code, state: receivedState }); + } } diff --git a/apps/desktop/src/main.ts b/apps/desktop/src/main.ts index f64ae8e5890..5cc2eb4d095 100644 --- a/apps/desktop/src/main.ts +++ b/apps/desktop/src/main.ts @@ -273,28 +273,7 @@ export class Main { argv .filter((s) => s.indexOf("bitwarden://") === 0) .forEach((s) => { - const url = new URL(s); - const code = url.searchParams.get("code"); - const receivedState = url.searchParams.get("state"); - let message = ""; - - if (code === null) { - return; - } - - if (s.indexOf("bitwarden://duo-callback") === 0) { - message = "duoCallback"; - } else if (receivedState === null) { - return; - } - - if (s.indexOf("bitwarden://import-callback-lp") === 0) { - message = "importCallbackLastPass"; - } else if (s.indexOf("bitwarden://sso-callback") === 0) { - message = "ssoCallback"; - } - - this.messagingService.send(message, { code: code, state: receivedState }); + this.messagingService.send("deepLink", { urlString: s }); }); } }